Skocz do zawartości

Cała aktywność

Strumień aktualizowany automatycznie     

  1. Ostatnia godzina
  2. Interesujący temat, ciekawe w jaki sposób tego typu montaż może wpłynąć na ESD i impedancje w ścieżkach highspeedowych - czy może pomóc czy raczej przeszkodzić.
  3. Dzisiaj
  4. Tak, ale po założeniu chłodzenia wodnego temperatura przy stress test spadła ze 104 na powietrznym do 65 na wodnym. A 104 to temperatura zabójcza dla procesora. Może jakieś sugestie ktoś ma co do tego BIOS'u?
  5. Może pomyliłeś nóżki, spróbuj przełączyć do tego PD5 i ustawić w programie jak było to będziesz wiedział czy to zwyczajna pomyłka. Zdarzają się takie rzeczy i trzeba mieć to na uwadze. Gdybyś miał jakieś jeszcze kłopoty z tą atmegą, pisz śmiało. Pomożemy. Panie Marku kochany, uprzejmie proszę o zaprzestanie przy każdej okazji tego typu "wycieczek osobistych" pod moim adresem. Przecież doskonale zdaje Pan sobie sprawę, że powód pańskiego sporu w tym temacie jest co najmniej przesadzony i nie ma zasadniczego związku z meritum problemu z jakim zmagał się autor wątku. Rozumiem, że może mnie Pan nie lubić z jakichś powodów ale PPF obowiązuje zarówno mnie jak i Pana, tak więc nie musimy się lubić, nie musimy się zgadzać ale powinniśmy się szanować. Tym czasem pańskie wypowiedzi świadczą jedynie o Panu samym, nie o mnie i z mojej perspektywy nie świadczą one o Panu najlepiej. Aby nie zostawiać potomności takich niesmacznych pamiątek proszę szanowną moderację ( @Gieneq ) o uprzątnięcie zbędnych wypowiedzi i pozostawienie tylko tych związanych z tematem.
  6. Witam, Z tej strony pan Maruda, stopni swobody jest 6 - 3 ruchy liniowe i 3 ruchy obrotowe zgodnie z osiami X Y Z. Twój projekt ma 3 stopnie swobody (3 kierunki obrotów). Nie myślałeś o czymś takim? [chwytak.jpg] tu są 2 stopnie swobody ale myślę, że ten trzeci można dodać jeśli jest konieczny. Część czerwona może mieć dowolną długość i można tymi "linkami" sterować w dowolny sposób - ręczny, elektryczny, hydrauliczny i cały układ sterowania jest na zewnątrz - czyli może mieć praktycznie dowolne wymiary i nie wpływa na na część wchodzącą do ciała. To trochę schemat ideowy ale w 3D. Nie jest to gotowe rozwiązanie i trzeba było by je dopracować przed użyciem. Przy opcji takiej, że takich modułów ma być więcej na jednej linii, można było by zastosować mini hydraulikę rozciągniętą pomiędzy modułami.
  7. Cześć, konstruuję urządzenie do informowania czy dany cykl jest robiony w normie czasowej, czy po za normą czy tez z zapasem. I teraz wszystko wydaję mi się, że powinno działać dzieje się tak że dioda przygasa tak jak by wraz "odświeżaniem" pętli loop. Wcześniej miałem problem, że dioda nie świeciła tylko pomrugiwała ledwo świecąc ale jak przeniosłem kod od diody przed delay to się problem odwrócił na ten obecny. Czy coś źle to logicznie sobie w głowie ułożyłem, czy wystarczy coś miejscami zamienić. Dla bardziej zainteresowanych załączam film w zipie, jednak na nim nie widać tak dokładnie tych przygasań, za to dla oczu są one nieprzyjemne. #include <LiquidCrystal.h> LiquidCrystal lcd(13, 12, 11, 10, 9, 8); int zmienna = 0; float czas = 0; void setup() { pinMode(7, INPUT);// ustawienie pinow pinMode(4, OUTPUT); pinMode(5, OUTPUT); pinMode(6, OUTPUT); lcd.begin(16, 2);// ustawienia wyswietlacza lcd.setCursor(0, 0); lcd.print("Witaj!!!"); lcd.setCursor(0, 1); lcd.print("Zaczynajmy"); Serial.begin(9600);// monitor portu szeregowego Serial.println(zmienna); } void loop() { if (digitalRead(7) == LOW){ // odbieranie sygnału z czujnika indukcyjnego czas = czas+0.25; Serial.println(zmienna);// wyswietlanie w porcie szeregowym Serial.println(czas); digitalWrite(4, LOW); // wyłączenie wszystkich diód digitalWrite(5, LOW); digitalWrite(6, LOW); lcd.clear();// formula wyswietlania lcd.setCursor(0, 0); lcd.print("Czas:"); lcd.print(czas); lcd.setCursor(0, 1); lcd.print("Cykl:"); lcd.print(zmienna); if (czas > 1 && czas < 25){ // warunek dla zielonej diody digitalWrite(4, HIGH); digitalWrite(5, LOW); digitalWrite(6, LOW); } if (czas > 25 && czas < 30){//warunek dla diody zoltej digitalWrite(4, LOW); digitalWrite(5, HIGH); digitalWrite(6, LOW); } if (czas > 30){//warunek dla diody czerwonej digitalWrite(4, LOW); digitalWrite(5, LOW); digitalWrite(6, HIGH); } delay(250);/przerwa if (czas == 20){ // formula do liczenia cykli ktora eliminuje poprawianie szybkie nabijanie cykli zmienna = zmienna + 1; }}else (czas = 0); // zerowanie licznika } video-1582714045.zip
  8. Ale to nie jest odpowiedź na pytanie "Dlaczego to nie działało?". Nie widzę powodów dla których PD5 w tej aplikacji jest gorszy od PB7 więc nie udawaj, że rozwiązałeś problem tylko pochyl się nad tym. Sprawdź, czy możesz dowolnie machać pinem PD5 bez podłączonego mostka a potem podłącz go z powrotem i sprawdź, czy napięcie na pinie zmienia się gdy jest on czymś obciążony. Nawet jeśli dojdziesz do wniosku, że kiedyś tam spaliłeś tę linię (albo miałeś zwarcie kabelka albo brak kontaktu na płytce albo kosmici wysłali impuls EM), to też będzie ważna nauka. Obecnie wiesz tylko, że z jakichś magicznych powodów z pinem PD5 mostek L293 nie współpracuje a to nieprawda. Pomierz wszystko i zapodaj dalsze wyniki. Ciekaw jestem (i Ty zapewne też) prawdziwej przyczyny. @atMegaTona A minusuj sobie chłopcze jeśli to Ci pomaga "Moja prawda jest najmojsza", co? Kiedyś będziesz się tego wstydził, ale musisz jeszcze trochę latek uzbierać na karku żeby to zrozumieć. Chęci do błyszczenia masz spore, owszem - widać po przyrostach licznika, ale musisz się jeszcze wiele nauczyć. I tak z ręką na sercu: każda Twoja porada jest poprawna merytorycznie czy niektóre wyglądają jak nieprzemyślany słowotok w stylu "muszę coś napisać bo już 10 minut minęło"? Niestety, nie chęć szczera zrobi z Ciebie itd.. Chciałem zwrócić tylko uwagę na pewną powierzchowność Twoich postów ale widzę, że masz jakiś problem z krytyką. Krytykować to my, ale nie nas? Myślisz, że jak piszesz do początkującego to nikt mądrzejszy (niespodzianka: są tacy, dopuszczasz taką myśl?) nie potrafi obiektywnie ocenić Twoich słów? Także: spokojniej (szklanka zimnej wody? - podobno pomaga w pewnych sytuacjach), więcej zastanowienia i empatii dla tych do kogo piszesz. Ja, mimo Twoich potknięć widzę między wierszami zarówno dobre intencje jak i sporą (choć bardzo dziurawą) wiedzę, ale oni - nie mając kompetencji do oceny Twoich rad są bezbronni i łykają wszystko literalnie jak masło. Nie wykorzystuj tego do prezentacji swojej elokwencji, to zwyczajnie nie fair. Nie ja pierwszy to piszę, nie zastanawia Cię to? Łatwiej przyjąć, że Cię nie lubimy lub że się uwzięliśmy i rozdawać grymaśne buźki? Naprawdę?
  9. Jestem raczkujący więc nie zrozumiałem jego idei. W swoim dotychczasowym kodzie z wykorzystaniem SD.h w jednym miejscu tworze plik.txt, w innym otwiera się i zapisuje część informacji dotyczących ustawień, w jeszcze innym dopisuje wyniki z czujników, a w innym znów to robi ale z innymi danymi a jeszcze w innym awaryjnie zamyka plik.txt. Zapewne właśnie ta czytelność i łatwość korzystania z SD.h okupiona jest zasobochłonnością. W przypadku PetitSF chyba się pogubiłem bo wszystko się sypnęło. Pewnie spróbuje raz jeszcze. zaczynając od kilku linijek kodu a dopiero potem zaimplementuje to do mojego programu.
  10. Po zamianie PD5 na PB7 wszystko jest OK, kręci się w lewo i w prawo Czyli złym wyborem był wybór pinu. Dzięki bardzo za pomoc.
  11. Duża zmienna została utworzona w ramie a ostrzeżenie samo się chyba wyjaśnia - może zabraknąć pamięci podczas pracy. Polecam Ci jednak tego PetitSF jest lekki. Co się stało, że się nie udało wykorzystać? Tam wystarczy jedynie plik konfiguracyjny zmodyfikować.
  12. Jeśli Twój silnik nie zmienia obrotów po zamianie biegunowości, to nic nie poradzimy Żaden mostek tu nie pomoże. Sprawdź może w ostateczności jego pracę bezpośrednio z baterią. Moim zdaniem: Silnik masz podłączony inaczej niz sobie to wyobrażasz, np. jednym końcem do masy lub do plusa a nie każdy drut do osobnego wyjścia mostka. W trzeciej sekwencji masz ustawianie obu linii w stan 1, silnik się kręci a pomiary wskazują co innego. Coś tu pokręciłeś. Wyjście sterowane przez PD5 nie działa - tam zawsze jest <1V co wskazuje na uszkodzony postek albo połączenia inne niż chciałeś. A co Ty o tym sądzisz? Napięcia mierzysz na pinach mostka czy na silniku? Sprawdź wszystkie połączenia i/lub przejdź na drugą stronę scalaka.
  13. O stm32mp1 są na Forbocie co najmniej dwa artykuły: https://forbot.pl/blog/nowe-stm32-ze-wsparciem-dla-linuksa-cos-dla-fanow-rpi-id33971 https://forbot.pl/blog/stm32mp1-co-warto-wiedziec-jak-zaczac-id37003 Ogólnie ten mikroprocesor jest bardziej interesujący, ale raczej ma niewiele wspólnego z instalacją Linux-a na mikrokontrolerach, co było opisane w tym temacie. Co do komunikacji między rdzeniami, to używana jest biblioteka OpenAMP (https://github.com/OpenAMP/open-amp/wiki/OpenAMP-Overview), ale najprościej jest użyć wirtualnego uart-a. W przykładach od ST znajdziemy gotowe rozwiązanie, które działa tak jakby oba rdzenie były połączone łączem szeregowym (po stronie linuxa używamy zwykłego urządzenia /dev/tty*, po stronie mikrokontrolera mamy gotowe funkcje do wysyłania i odbierania danych). Natomiast przypisanie GPIO i większości modułów peryferyjnych można samemu zmodyfikować, więc jeśli chcemy to rdzeń cortex-m może kontrolować więcej GPIO niż cortex-a. Wszystko zależy od zastosowania. Niektóre moduły oraz ich piny (np. pamięć DDR) są dostępne tylko dla cortex-a, ale na pewno nie jest to większość.
  14. Dziękuję wszystkim za szybką odpowiedź. Tutaj trochę ja namieszałem bo wkleiłem kod w wersji "testowej" nie zmieniając 0 na 1. Normalnie mam ustawione W1 i W2 na (1<<PD5) i (1<<PD6). Już przetestowałem wcześniej to jak opisałeś - PORTD &= ~(1<<PD6); oraz jak poradził @marek1707 sprawdziłem napięcie na nóżkach PD5 i PD6 qC. Wszystko jest zasilane napięciem 5V. Wygląda to tak: PORTD &= ~(1<<PD5); // 0,6V PORTD |= (1<<PD6); // 5V Silnik obraca się przyjmijmy że w lewo PORTD |= (1<<PD5); // 0,6V PORTD &= ~ (1<<PD6); // 0V Silnik stoi PORTD |= (1<<PD5); // 0,5V PORTD |= (1<<PD6); // 5V Silnik obraca się w lewo PORTD &= ~(1<<PD5); // 0,7V PORTD &= ~ (1<<PD6); // 0V Silnik stoi Jak na schemacie, przypominam jeszcze raz PD5 idzie do 4A PD6 idzie do 3A Bity W1 i W2 zostały oczywiście zmienione jak wyżej napisałem #define W1 (1<<PD5) #define W2 (1<<PD6)
  15. Zapisów będzie dużo i często. Nie będzie natomiast żadnego odczytywania. PetitFS się nie udało wykorzystać. Próbowałem też z SdFat.h ale początkowy entuzjazm zakończył się gdy w pewnym momencie zużycie pamięci dynamicznej przekroczyło 100%. Jako że korzystam z tych wszystkich urządzeń bardziej na "czuja" czyli bez pełnej tj. dogłębnej świadomości jak działają na poziomie pamięci, chciałbym dopytać o jedną rzecz. Wykonuje następujące kroki: 1. Inkluduję bibliotekę SdFat.h i mam zajęte 60% pamięci dynamicznej 2. Definiuje SdFile plik; i mam zajęte 60% pamięci dynamicznej 3. Definiuje SdFat sd; i mam zajęte 89% pamięci dynamicznej oraz komunikat o problemach ze stabilnością Co się w tym miejscu wydarzyło? Pytam jedynie z potrzeby wiedzy, natomiast rozglądnę się jeszcze za czymś innym do obsługi SD.
  16. @fiflak1223 przy 10V taki prąd uzyskasz dając w szereg rezystor około 50k więc coś na pewno jest nie tak. Może bezpiecznik dla małych prądów jest uszkodzony. Pewnie ten na duże prądy jest cały, weź rezystor 100R i zmierz prąd ale dla np 10A i oczywiście przełóż czerwoną sondę na 10Amax. prąd powinieneś uzyskać około 0.1, jakby nie było nic widoczne, to daj 2 równolegle 100R (wypadkowy opór jest o połowę mniejszy).
  17. Myślę, że temat jest z grubsza wyczerpany. Prewencyjnie zamykam
  18. Wczoraj
  19. Ale czy ta kreska to jakaś niekwestionowana reguła? w avr libc zdaje się nie ma nawet makra _NBV() które jest jednak wygodniejsze od ~_BV() więc równie dobrze jeśli będzie to BV() i NBV() (czyt. negative bit value) niż na sztywno W1 i W2. Nie mam pojęcia po co ten komentarz, tym bardziej, że próba ponownego zdefiniowania makra _BV() skończyła by się co najmniej warnem i kolega @bluzman musiałby się nad nim niepotrzebnie zastanawiać. Nie twierdzę też oczywiście, że to podkreślenie nie ma sensu bo jak najbardziej ma, program dzięki niemu jest bardziej czytelny, ale dla kolegi ważniejsza jest chyba kwestia poprawnego działania niż niuanse sementyczne i zgodność z konwencją przyjętą w pliku takim a takim o której kolega @bluzman nie ma zapewne bladego pojęcia i która zapewne mało go interesuje.
  20. Plan był ambitny ale przekombinowany. Ostatecznie wybór padł na fotodiody nadawcze i odbiorcze ze wzmacniaczami obsługiwane przez arduino pro mini. Fajerwerków nie będzie ale za to będzie szybko, łatwo, przyjemnie i tanio.
  21. Nie piszesz tego dla mnie (i mam nadzieję, że także nie dla siebie) tylko dla Kolegi, który ma problem z wysterowaniem dwóch wyjść. Jeżeli robisz to niechlujnie to lepiej na chwilę odpuść - nie musisz być obecny w każdym wątku i świat się od tego nie zawali. Odpowiedzi na Forum to jak komentarze w programie: złe są gorsze od ich braku a ilość nie przechodzi automatycznie w jakość. Już Ci zwracano na to uwagę więc pilnuj się, bo na reputację pracuje się ciężko a stracić ją łatwo. To nie wyścig, zanim wyślesz czytaj swoje posty dwa razy, koniecznie z punktu widzenia osoby czekającej na pomoc.
  22. Po części się zgodzę, że do serw nie są konieczne rezystory na liniach sterujących ale gdyby jednak były niczego by to nie zmieniło. Sytuacja byłaby inna kiedy zamiast serwa byłoby wejście jakiegoś sterownika lub pullup i wtedy te 0,4V różnicy nawet mogłoby mieć znaczenie. Sygnał prostokątny to nie szpilki a wygładzanie szpilek jest zawsze pożądane. Tak czy inaczej faktycznie nie ma sensu mieszać @qnaman w głowie. Można te serwa podłączyć i bez rezystorów ale mam nadzieję, że wspomnienie o nich w kontekście różnicy napięć do czegoś mu się kiedyś przyda.
  23. Cześć kupiłem ostatnio płytkę arduino nano every (ATMEGA4809) i mam problem z załadowaniem na nią jakiegokolwiek programu nawet blink. Tutaj wstawiam opis błędów. Pisze też że jkagmll_send():faild . Oczywiście wszystkie ustawienia ustawione według producenta. P.S. Co można zrobić aby mikrokontroler aż tak się nie grzał ? Arduino:1.8.12 (Windows Store 1.8.33.0) (Windows 10), Płytka:"Arduino Nano Every, None (ATMEGA4809)" Szkic używa 1118 bajtów (2%) pamięci programu. Maksimum to 49152 bajtów. Zmienne globalne używają 22 bajtów (0%) pamięci dynamicznej, pozostawiając 6122 bajtów dla zmiennych lokalnych. Maksimum to 6144 bajtów. processing.app.debug.RunnerException at cc.arduino.packages.uploaders.SerialUploader.uploadUsingPreferences(SerialUploader.java:152) at cc.arduino.UploaderUtils.upload(UploaderUtils.java:77) at processing.app.SketchController.upload(SketchController.java:732) at processing.app.SketchController.exportApplet(SketchController.java:703) at processing.app.Editor$UploadHandler.run(Editor.java:2047) at java.lang.Thread.run(Thread.java:748) Caused by: processing.app.SerialException: Błąd dotknięcia portu szeregowego 'COM4'. at processing.app.Serial.touchForCDCReset(Serial.java:107) at cc.arduino.packages.uploaders.SerialUploader.uploadUsingPreferences(SerialUploader.java:136) ... 5 more Caused by: jssc.SerialPortException: Port name - COM4; Method name - openPort(); Exception type - Port busy. at jssc.SerialPort.openPort(SerialPort.java:164) at processing.app.Serial.touchForCDCReset(Serial.java:101) ... 6 more Podczas ładowania szkicu wystąpił błąd Ten raport powinien zawierać więcej informacji jeśli w File -> Preferencje zostanie włączona opcja "Pokaż szczegółowe informacje podczas kompilacji" lub Arduino:1.8.12 (Windows Store 1.8.33.0) (Windows 10), Płytka:"Arduino Nano Every, None (ATMEGA4809)" Szkic używa 1118 bajtów (2%) pamięci programu. Maksimum to 49152 bajtów. Zmienne globalne używają 22 bajtów (0%) pamięci dynamicznej, pozostawiając 6122 bajtów dla zmiennych lokalnych. Maksimum to 6144 bajtów. processing.app.debug.RunnerException at cc.arduino.packages.uploaders.SerialUploader.uploadUsingPreferences(SerialUploader.java:152) at cc.arduino.UploaderUtils.upload(UploaderUtils.java:77) at processing.app.SketchController.upload(SketchController.java:732) at processing.app.SketchController.exportApplet(SketchController.java:703) at processing.app.Editor$UploadHandler.run(Editor.java:2047) at java.lang.Thread.run(Thread.java:748) Caused by: processing.app.SerialException: Błąd dotknięcia portu szeregowego 'COM4'. at processing.app.Serial.touchForCDCReset(Serial.java:107) at cc.arduino.packages.uploaders.SerialUploader.uploadUsingPreferences(SerialUploader.java:136) ... 5 more Caused by: jssc.SerialPortException: Port name - COM4; Method name - openPort(); Exception type - Port busy. at jssc.SerialPort.openPort(SerialPort.java:164) at processing.app.Serial.touchForCDCReset(Serial.java:101) ... 6 more Podczas ładowania szkicu wystąpił błąd Ten raport powinien zawierać więcej informacji jeśli w File -> Preferencje zostanie włączona opcja "Pokaż szczegółowe informacje podczas kompilacji" często też program po prostu się NIEwgrywa :(.
  24. .. i nie da się do niej dołączyć równolegle RAMu z interfejsem równoległym na co pozwalają większe wynalazki tej rodziny. Wtedy sprowadza się to jedynie do odpowiedniego ustawienia fusów i rejestrów i Twoja pamięć operacyjna powiększa się o pojemność dodatkowego scalaka. PetitFS zaproponowane przez Marka to chyba jedyny racjonalny wybór dla małych procków AVR, tak więc nie musisz się już nad tym zastanawiać. Też miałem tego typu dylematy. Pamiętam, kiedy się pojawiły XMegi jaki był szał przez chwile, obecnie jednak STM32 nic nie przebije ale trzeba pamiętać, że im większe możliwości to więcej problemów do rozwiązania i wiedzy do przyswojenia a to wszystko kosztuje czas a czas to pieniądz więc sam rozważ co Ci się lepiej opłaca. :)
  25. Oj ta, oj tam, czepiasz się ;) co za różnica jak kto sobie makro zdefiniuje, ważne, że działa jak powinno.
  26. Do UNO a także innych AVR-owych Arduinów nie można dołożyć pamięci programu. Te procesory tak mają i koniec - wybierasz tak duży jaki potrzebujesz a gdy pamięć kodu się kończy, kupujesz większy lub zaczynasz grzebać w programie, ew. opcjach kompilatora. Można dołożyć różne pamięci (RAM, FRAM, FLASH, EEPROM i co tam jeszcze wymyślono) na interfejsach szeregowych - tak jak kartę SD, no ale to zawsze wymaga kolejnych funkcji w programie do obsługi nowego zasobu. Na Twoim miejscu poszukałbym innych bibliotek dla SD. Przecież nie jednemu psu Burek i na pewno coś znajdziesz. Nie jesteś pierwszym, który wszedł na te grabie w Arduino więc szansa na skorzystanie z pracy innych jest spora. Pierwsze z brzegu trafienie przeglądarki na zapytanie "small SD Arduino library": http://elm-chan.org/fsw/ff/00index_p.html https://github.com/greiman/PetitFS Zopisu wygląda, że ta biblioteka chyba nawet nie rezerwuje statycznie bufora na sektor SD - co zawsze jest sporym obciążeniem "na dzień dobry". Na pewno jest to okupione jakimis innymi ograncizeniami (np. prędkością, możliwością otwarcia tylko jednego pliku na raz itd..), ale dopóki nie zapsiujesz tam próbek głosu tylko z rzadka jakieś wyniki pomiarów to powinno zadziałać. Co więcej, z tego co czytam we wstępie, PetitFS jest w pewien sposób konfigurowalne więc np. możesz oszczędzić sporo na FLASHu rezygnując z tworzenia i zapisywania do plików a zostawiając sobie tylko odczyt utworzonych (np. na PC) wcześniej. Nie wiemy dokładnie co robisz, ale rozejrzyj się w sieci - to może być prostsze niż kupowanie nowej płytki i migracja projektu na większy procesor. Choc z doświadczenia Ci powiem, że wszystkie niebanalne interfejsy są zasobożerne. Zarówno Ethernet, USB, SD/MMC plus system plików jako moduł - one wszystkie potrzebują po pierwsze RAM, pod drugie RAM i po trzecie RAM, a małe mikrokontrolerki mają go zwykle jak na lekarstwo. I dlatego jak już masz chip z tymi blokami to w środku możesz spokojnie spodziewać się min. 16K RAMu a najpewniej >64K. Mała mega328 zwyczajnie nie jest do tego przeznaczona..
  1. Załaduj więcej aktywności
×
×
  • Utwórz nowe...