Zrobiłem i wprowadzam do sprzedaży rodzinę kart I/O zwanych w terminilogii Raspberry jako "hat". Wszystkie one mają ten sam firmware - różnią się tylko layoutem i ilością wyprowadzeń.
1. Universal Plus - format HAT RPi, 29 I/O, w tym oddzielnie wyprowadzone 16 w formacie złącz do RC serwomechanizmów

2. Universal Zero Plus - format pHAT, 29 I/O
3. Universal Zero Plus Servo - 18 wyjść na serwomechanizmy
3. Universal Plus w formacie shield Arduino - 29 I/O i 16 wyjść w formacie RC serwo
Opis funkcjonalny:
Płytki podłączane są poprzez SPI. Maksymalna prędkość SPI to 16MHz
W maksymalnym wariancie 29 I/O podzielone jest na:
- 29 GPIO
- 19 ortów PWM
- 15 portów ADC
- 2 porty DAC
częsć portów może pracować jako wejścia komparatorów (np do wyzwania konwersji ADC), wejścia liczników lub trygierze różnych operacji. W aktualnym firmware te ostatnie funkcje nie są jeszcze zaimplementowane.
ADC:
Ukłąd ma 4 ADC. Podział na 15 wejść nie jest symetryczny. Każde z ADC ma prędkość ok 5MSPS. ADC może pracować w trybie pojedynczej sekwencji - przy czym nie ma znaczenia do jakiego ADC należą porty w sekwencji lub w trybie autonomicznym - gdzie zbierana jest określona liczba próbek w określonym okresie czasu przy stałym odstępie czasu pomiędzy uruchamianiem sekwencji odczytów dla danego kanału ADC. Brzmi może trochę zagmatwanie - ale generalnie jest to proste: np jezeli zostanie zadane odczytanie 512 próbek w okresie 1ms z kanałów 1,2,5,10,12,14,15 to co mniej więcej 2µs zostaną wyzwolone odczyty ze wszystkich czterech ADC ADC1 - 1,2; ADC2 - 5; ADC3 - 10; ADC4 - 12,14,15. W ADC gdzie jest do przetworzenia więcej niż jeden kanał bedą one wykonywane w sekwencji. Należy zwrócić uwagę aby czas konwersji wszystkich kanałów z danego ADC był krótszy niż okres pomiędzy startami konwersji.
Podział kanałów pomiędzy ADC jest przedstawiony w tabelce poniżej
GPIO:
GPIO mogą pracować jako wejścia i wyjścia. Oprogramowanie zapewnia wsparcie dla pomiaru częstotliwości, szerokości impulsu i wypełnienia sygnałów cyfrowych.
PWM:
Kanały PWM podzielone są na 8 grup. Kanały w jednej grupie mają jedną częstotliwość ale oczywiście mogą mieć różne wypełnienia. Teoretycznie maks częstotliwość przy wypełnieniu 50% to 32MHz. Oprogramowanie zapewnia g"litch free" zmianę częstotliwości i wypełnienia sygnału.
Kanały PWM mogą pracować w trybie RC PWM generując sygnał dla serwomechanizmów. Oprogramowanie zapewnia funkcje do ustawiania parametrów RC PWM. Można określić częstotliwość impulsów (np do sterowania serw cyfrowych) oraz szerokość impulsów dla skrajnych położeń oraz punktu centralnego serwa oraz współczynnik wykładniczy (co to jest https://www.desmos.com/calculator/x3utvihals). Podanie wychylenia serwa od -100% do 100% z punktem centralnym w 0%. Punkty skrajne nie muszą być symetryczne.
DAC:
Dwa kanały DAC o szybkości do ok 5MSPS (zależy to od rodzaju obciążenia)
Podobnie jak ADC mogą pracować autonomicznie generując zadany przebieg. Demonstrację takiej pracy w filmikach na końcu postu.
Płytki wspierają sterowanie silnikami krokowymi.
Płytki mają własny bootloader działający na SPI. Nie jest to firmowy STM-a, zapewnia sprawdzanie poprawności załadowanej aplikacji, jak również dekoduje ładowany plik z firmware. Oprogramowanie aktualizujące oprogramowanie na razie jest tylko dla wersji RPi.
Płytki oparte są o STM32F303
Demo serwo + silnik krokowy + dioda PWM
DAC demo
Generacja sysgnału DAC 2 kanały plus PWM i odczyt 3 kanałów. Przebieg trójkątny zniekształcony poprzez przekroczenie czasu o którym pisałem w opisie ADX
Link do plików .py z demo, draftem DS-a i draftem manuala: https://github.com/diymat/UniversalZeroPlus
1. Universal Plus - format HAT RPi, 29 I/O, w tym oddzielnie wyprowadzone 16 w formacie złącz do RC serwomechanizmów


2. Universal Zero Plus - format pHAT, 29 I/O

3. Universal Zero Plus Servo - 18 wyjść na serwomechanizmy

3. Universal Plus w formacie shield Arduino - 29 I/O i 16 wyjść w formacie RC serwo

Opis funkcjonalny:
Płytki podłączane są poprzez SPI. Maksymalna prędkość SPI to 16MHz
W maksymalnym wariancie 29 I/O podzielone jest na:
- 29 GPIO
- 19 ortów PWM
- 15 portów ADC
- 2 porty DAC
częsć portów może pracować jako wejścia komparatorów (np do wyzwania konwersji ADC), wejścia liczników lub trygierze różnych operacji. W aktualnym firmware te ostatnie funkcje nie są jeszcze zaimplementowane.
ADC:
Ukłąd ma 4 ADC. Podział na 15 wejść nie jest symetryczny. Każde z ADC ma prędkość ok 5MSPS. ADC może pracować w trybie pojedynczej sekwencji - przy czym nie ma znaczenia do jakiego ADC należą porty w sekwencji lub w trybie autonomicznym - gdzie zbierana jest określona liczba próbek w określonym okresie czasu przy stałym odstępie czasu pomiędzy uruchamianiem sekwencji odczytów dla danego kanału ADC. Brzmi może trochę zagmatwanie - ale generalnie jest to proste: np jezeli zostanie zadane odczytanie 512 próbek w okresie 1ms z kanałów 1,2,5,10,12,14,15 to co mniej więcej 2µs zostaną wyzwolone odczyty ze wszystkich czterech ADC ADC1 - 1,2; ADC2 - 5; ADC3 - 10; ADC4 - 12,14,15. W ADC gdzie jest do przetworzenia więcej niż jeden kanał bedą one wykonywane w sekwencji. Należy zwrócić uwagę aby czas konwersji wszystkich kanałów z danego ADC był krótszy niż okres pomiędzy startami konwersji.
Podział kanałów pomiędzy ADC jest przedstawiony w tabelce poniżej
GPIO:
GPIO mogą pracować jako wejścia i wyjścia. Oprogramowanie zapewnia wsparcie dla pomiaru częstotliwości, szerokości impulsu i wypełnienia sygnałów cyfrowych.
PWM:
Kanały PWM podzielone są na 8 grup. Kanały w jednej grupie mają jedną częstotliwość ale oczywiście mogą mieć różne wypełnienia. Teoretycznie maks częstotliwość przy wypełnieniu 50% to 32MHz. Oprogramowanie zapewnia g"litch free" zmianę częstotliwości i wypełnienia sygnału.
Kanały PWM mogą pracować w trybie RC PWM generując sygnał dla serwomechanizmów. Oprogramowanie zapewnia funkcje do ustawiania parametrów RC PWM. Można określić częstotliwość impulsów (np do sterowania serw cyfrowych) oraz szerokość impulsów dla skrajnych położeń oraz punktu centralnego serwa oraz współczynnik wykładniczy (co to jest https://www.desmos.com/calculator/x3utvihals). Podanie wychylenia serwa od -100% do 100% z punktem centralnym w 0%. Punkty skrajne nie muszą być symetryczne.
DAC:
Dwa kanały DAC o szybkości do ok 5MSPS (zależy to od rodzaju obciążenia)
Podobnie jak ADC mogą pracować autonomicznie generując zadany przebieg. Demonstrację takiej pracy w filmikach na końcu postu.

Płytki wspierają sterowanie silnikami krokowymi.
Płytki mają własny bootloader działający na SPI. Nie jest to firmowy STM-a, zapewnia sprawdzanie poprawności załadowanej aplikacji, jak również dekoduje ładowany plik z firmware. Oprogramowanie aktualizujące oprogramowanie na razie jest tylko dla wersji RPi.
Płytki oparte są o STM32F303
Demo serwo + silnik krokowy + dioda PWM
DAC demo
Generacja sysgnału DAC 2 kanały plus PWM i odczyt 3 kanałów. Przebieg trójkątny zniekształcony poprzez przekroczenie czasu o którym pisałem w opisie ADX
Link do plików .py z demo, draftem DS-a i draftem manuala: https://github.com/diymat/UniversalZeroPlus
Cool? Ranking DIY