Popularny post FlyingDutch Napisano Styczeń 8, 2022 Popularny post Udostępnij Napisano Styczeń 8, 2022 (edytowany) Cześć, jakiś czas temu (będzie ze dwa lata) kupiłem w firmie Botland "MiniGen Shield" firmy "Sparkfun". Podlączyłem generator do "Arduino UNO" zainstalowałem wymaganą bibliotekę do "Arduino IDE" i uruchomiłem dostarczony przykładowy kod - generator działał poprawnie. Potem układ leżał w szufladzie i czekał na lepsze czasy. Dzisiaj postanowiłem w końcu zrobić sobie "Generator sygnałowy" (sinus, trójkąt, prostokąt) na tym module i chińskim klonie "Arduino Pro Mini" (AtMega328). Tutaj kilka linków do modułu "MinGen Shield" i podstawowej dokumentacji: https://botland.com.pl/produkty-wycofane/2413-minigen-shield-generator-sygnalu-nakladka-do-arduino-pro-mini-sparkfun-bob-11420-5904422330774.html https://learn.sparkfun.com/tutorials/minigen-hookup-guide/all A tutaj kod źródłowy (na GitHubie) do biblioteki dla tego modułu (do Arduini IDE): https://github.com/sparkfun/SparkFun_MiniGen_Arduino_Library https://github.com/sparkfun/MiniGen Tutaj zamieszczam tutorial (i pinout) jak uzywać "Arduino Pro Mini": https://learn.sparkfun.com/tutorials/using-the-arduino-pro-mini-33v/all https://cdn.sparkfun.com/assets/d/5/2/f/0/ProMini16MHzv2.pdf Ja mam wersję "Arduino pro Mini" zasilaną z 5V (nie ma ona zlącza USB do programowania) - tani chiński klon z AliExpress więc potrzebowałem jeszcze przejściówki "USB-UAR" (też chińska na układzie Ch340 z 4,50 PLN) do programowania. Do budowy układu użyte zostały części: 1) "MiniGen Shield Sparkfun" https://botland.com.pl/produkty-wycofane/2413-minigen-shield-generator-sygnalu-nakladka-do-arduino-pro-mini-sparkfun-bob-11420-5904422330774.html 2) "Arduino Pro Mini" wersja 5V *16Mhz): https://pl.aliexpress.com/item/32605434250.html?spm=a2g0o.productlist.0.0.645a1b0a27d5c8&algo_pvid=91689445-f8cf-4dea-95d2-ead3a954d385&aem_p4p_detail=202201080216347940396574922500057959440&algo_exp_id=91689445-f8cf-4dea-95d2-ead3a954d385-4&pdp_ext_f={"sku_id"%3A"10000001189597609"}&pdp_pi=-1%3B21.87%3B-1%3BPLN+3.51%40salePrice%3BPLN%3Bsearch-mainSearch 3) Wyświetlacz OLED 0,96 cala I2C: https://botland.com.pl/wyswietlacze-i-ekrany/8866-wyswietlacz-oled-niebieski-graficzny-096-128x64px-i2c-niebieski-5904422337421.html 4) Mini-Joystick analogowy https://botland.com.pl/gravity-przyciski-klawisze-i-joysticki/11283-dfrobot-gravity-thumb-joystick-z-przyciskiem-modul-z-plytka-5903351243728.html 5) Przejściówka USB-UART CH340 - do programowania "Arduino Mini": https://pl.aliexpress.com/item/1005001621818602.html?spm=a2g0o.productlist.0.0.7eb11815uEYDO6&algo_pvid=88105137-f536-49a1-a194-5bd6266e3432&algo_exp_id=88105137-f536-49a1-a194-5bd6266e3432-0&pdp_ext_f={"sku_id"%3A"12000016846616799"}&pdp_pi=-1%3B3.14%3B-1%3BPLN+3.97%40salePrice%3BPLN%3Bsearch-mainSearch Koncepcja jest taka, aby za pomocą modułu joystic'ka analogowego (lewo,prawo, góra,dół, zatwierdź) przełączać tryby pracy (przebieg: Sinus,Trójkąt,Prostokąt) oraz bezpośrednio na wyświetlaczu ustawiać kolejne cyfry częstotliwości generowanego przebiegu (będą zakresy pomiarowe: Hertze, Kilo-Hertze, Mega-Hertze). Zakres generowanych częstotliwości: od ułamków Hertza do 3 MHz. Na początek zamieszczam wyjściowy schemat połączeń ("MiniGen Shield" + "Arduino Pro Mini" +Joystick+Wyświetlacz OLED) - jeśli okaże się to konieczne może dodam na wyjściu generatora jakiś filtr i wzmacniacz wykonany na wzmacniaczu operacyjnym: Schematic_MiniGeneratorSygnalowy.pdf Na razie układ jest złożony na płytce stykowej - tutaj zdjęcie: , ale docelowo, jak będę zadowolony z jego działania zaprojektuję prostą płytkę PCB w którą moduły: "MiniGen" i "Arduino Mini" będą wkładane w złącza żeńskie goldpin, będzie też na tej płytce układ zasilacza. Docelowo będzie też obudowa do układu generatora wydrukowana na drukarce 3D. Na razie mam "zaczątek" programu dla "Arduino Mini"- test działania wyświetlacza OLED, obsługi joystic'ka i modułu generatora (generator generuje sinusoidę o częstotliwości 4KHz) - patrz zrzut ekranu z oscyloskopu: Sinusoida jest trochę zaszumiona (podejrzewam, że to wina użycia płytki stykowej), być może dodam filtr analogowy na wzmacniaczu operacyjnym na wyjściu generatora. Tutaj ten "zaczątek" programu dla Arduino IDE dla układu: #include <Arduino.h> #include <U8g2lib.h> #include <SPI.h> #include <SparkFun_MiniGen.h> #ifdef U8X8_HAVE_HW_I2C #include <Wire.h> #endif //OLED Display constructor U8G2_SSD1306_128X64_NONAME_1_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE); // # Joystic Connection: // # X-Axis -> Analog pin 0 // # Y-Axis -> Analog pin 1 // # Z-Axis -> Digital pin 9 // # int JoyStick_X = 0; //x int JoyStick_Y = 1; //y int JoyStick_Z = 9; //key MiniGen gen; void setup(void) { Serial.begin(9600); // 9600 bps //Joystic start pinMode(JoyStick_Z, INPUT); //Start OLED u8g2.begin(); gen.reset(); delay(2000); gen.setMode(MiniGen::SINE); // This needs a little explanation. The choices are FULL, COARSE, and FINE. // a FULL write takes longer but writes the entire frequency word, so you // can change from any frequency to any other frequency. COARSE only allows // you to change the upper bits; the lower bits remain unchanged, so you // can do a fast write of a large step size. FINE is the opposite; quick // writes but smaller steps. gen.setFreqAdjustMode(MiniGen::FULL); } void loop(void) { static float frequency = 4000.0; int x,y,z; x=analogRead(JoyStick_X); y=analogRead(JoyStick_Y); z=digitalRead(JoyStick_Z); Serial.print(x ,DEC); Serial.print(","); Serial.print(y ,DEC); Serial.print(","); Serial.println(z ,DEC); // freqCalc() makes a useful 32-bit value out of the frequency value (in // Hz) passed to it. unsigned long freqReg = gen.freqCalc(frequency); // Adjust the frequency. This is a full 32-bit write. gen.adjustFreq(MiniGen::FREQ0, freqReg); u8g2.firstPage(); do { u8g2.setFont(u8g2_font_ncenB14_tr); u8g2.drawStr(0,24,"Hello World!"); } while ( u8g2.nextPage() ); delay(100); } MiniGen_OLED_01.zip Jak skończę program, to wrzucę tu końcową wersję. Jeśli układ będzie dobrze działał, to wrzucę też tutaj projekt płytki PCB i model obudowy do wydruku na drukarce 3D. Na razie to by było tyle. Pozdrawiam Edytowano Styczeń 8, 2022 przez FlyingDutch 4 1 Cytuj Link do komentarza Share on other sites More sharing options...
Gieneq Styczeń 10, 2022 Udostępnij Styczeń 10, 2022 @FlyingDutch widzę, że temat o którym niedawno pisaliśmy na forum się urzeczywistnił 🙂 Dnia 8.01.2022 o 11:47, FlyingDutch napisał: Zakres generowanych częstotliwości: od ułamków Hertza do 3 MHz. Pytanko, bo piszesz że zamontujesz to na listwy kołkowe. Czy przy MHz połączenie na kołki nie wnosi zniekształceń? Na płytce stykowej masz chyba 4kHz - 2,5 podziałki po 100us, sprawdzałeś jak wygląda sygnał dla MHz? Kiedyś myślałem żeby zbudować na tym układzie namiastkę generatora do warsztatu, zostawiłem to, bo uznałem że nie jestem w stanie zmontować dobrego stopnia wyjściowego. Domyślam się, że podłączenie wyjścia tego układu do testowanego układu nie jest dobrym pomysłem, chociażby dlatego, że ma małą obciążalność wyjściową. Masz na to pomysł? Cytuj Link do komentarza Share on other sites More sharing options...
FlyingDutch Styczeń 10, 2022 Autor tematu Udostępnij Styczeń 10, 2022 3 minuty temu, Gieneq napisał: @FlyingDutch widzę, że temat o którym niedawno pisaliśmy na forum się urzeczywistnił 🙂 Pytanko, bo piszesz że zamontujesz to na listwy kołkowe. Czy przy MHz połączenie na kołki nie wnosi zniekształceń? Na płytce stykowej masz chyba 4kHz - 2,5 podziałki po 100us, sprawdzałeś jak wygląda sygnał dla MHz? Kiedyś myślałem żeby zbudować na tym układzie namiastkę generatora do warsztatu, zostawiłem to, bo uznałem że nie jestem w stanie zmontować dobrego stopnia wyjściowego. Domyślam się, że podłączenie wyjścia tego układu do testowanego układu nie jest dobrym pomysłem, chociażby dlatego, że ma małą obciążalność wyjściową. Masz na to pomysł? Cześć, wyjścia generatora to dwie osobne linie(nie są wyprowadzone na gniazda kołkowe), reszta to sygnały cyfrowe (magistrala SPI i GPIO) i to te linie będą na gniazdach kołkowych(w niczym to nie przeszkadza). Chcę dodać stopień analogowy wyjściowy (filtr dolnoprzepustowy i wzmacniacz) na niskonapięciowych (Rail-to-Rail) wzmacniaczach operacyjnych. Część analogowa będzie na płytce PCB. Pozdrawiam 1 Cytuj Link do komentarza Share on other sites More sharing options...
Pomocna odpowiedź
Dołącz do dyskusji, napisz odpowiedź!
Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!