Skocz do zawartości

Paulo

Użytkownicy
  • Zawartość

    33
  • Rejestracja

  • Ostatnio

Reputacja

3 Neutralna

O Paulo

  • Ranga
    3/10

Informacje

  • Płeć
    Mężczyzna
  1. Mimo, że przetwornik ADC ma rozdzielczość 12bitów to funkcja HAL_ADC_GetValue zwraca wynik w postaci 32bitowej, dlatego funkcja HAL_ADC_Start_DMA wymaga wskaźnika na typ 32bitowy. Można zadeklarować bufor jako typ 16, czy 32bitowy i w obu przypadkach to będzie działać bez utraty rozdzielczości, ale trzeba odpowiednio skonfigurować DMA, a dokładniej długość słowa. W kursie było one ustawione na połowę słowa, czyli 16bit, dlatego "wyniki się naprawiły". Przy włączonej inkrementacji adresu, adres jest zwiększany właśnie o zdefiniowaną wielkość słowa, więc w przypadku deklaracji bufora 32bit i konfiguracji DMA na 16bit, 2 pierwsze pomiary zapisywane były w tej samej zmiennej 32bitowej,(1 pomiar na jej starszej części, a 2 na młodszej) stąd po złożeniu powstawała taka "dziwna" liczba.
  2. Tak wiem, że zazwyczaj jest to albo/albo, lecz w tym projekcie założeniem jest by jednak sterowanie odbywało się przez sygnały z czujników Halla, a odczyt prędkości był niezależnie od rodzaju sterowania realizowany na podstawie sygnałów z enkodera, także muszę jakość je połączyć. To znacznie upraszcza pomiar mocy wejściowej, dzięki. Metody sterowania znam, za to pytanie przepraszam, nie wiem jak ale przeoczyłem te wyprowadzone sygnały. Aczkolwiek dalej nie wiem jak to się stało, jak jest przecież wszystko wypisane w tabeli. Jednak tego kita muszę zostawić i wybrać inny, bo pomijam już sprawę z hall/enc, ale jednak nie mam jak wziąć i wyprowadzić z tego mikrokontrolera chociażby dodatkowego sygnału PWM do wzmacniacza op., czy nawet nie mam jak mierzyć napięcia przez wejście ADC na rezystorze pomiarowym do obliczenia mocy wyjściowej. Teraz odnośnie układu źródła: 1. Wstawiłem filtr dolnoprzepustowy, dobrałem R=4.7kΩ oraz C=100nF co daje stałą czasową τ niecałe 500us, a dzięki wysokiej częstotliwości 50kHz mamy praktycznie stałe napięcie wyjściowe. Dzięki małej stałej czasowej układ jest dość szybki, więc powinien nadążyć ze zmianą prądu by utrzymać np stałą moc wyjściową. Widać, że 3V osiąga od 0 w około 2ms. 2. Racja, sygnał musi być względem tego samego potencjału, zatem masy połączone. 3 i 4. Wstawiłem opornik za wyjściem wzmacniacza, by ograniczyć prąd ładowania bramki. Napięcie za prostownikiem również wyprostowane. (nie jestem pewien co do dobranych wartości) Układ teraz prezentowałby się tak: (pomiar napięcia zaznaczony symbolicznie, jeszcze bez dzielnika napięcia) Tylko, czy dając 3 takie same oporniki (1 na każdą fazę) potrzebuję dodatkowo 3 takich układów źródeł prądowych i 3 dzielniki do pomiaru napięcia tak? Czy jak inaczej byś to widział? Zasadę KISS znam, niestety racje rzadko o niej pamiętam i wiele rzeczy komplikuję, to prawda EDIT: Myślałem trochę o pomiarze mocy wyjściowej i o ile pomiar napięcia nie jest problemem to jednak moc ze wzoru P=U²/R jestem w stanie tylko dokładnie określić wydzielaną na samym rezystorze, a przecież to nie będzie cała moc wyjściowa prądnicy, jest jeszcze spadek napięcia na samych diodach prostownika oraz spadek napięcia na MOSFECIE. Czy uważasz, że taki pomiar mocy jest wystarczająco dokładny? Aczkolwiek wątpię. Założyłem max napięcie na R5 12V i przy stosunku rezystrów 18k÷6.8k dla 12V otrzymam na przetworniku napięcie 3.29V. Dodałem również diody zabezpieczające wejście MCU przez zbyt wysokim i niskim napięciem.
  3. FlyingDutch też wyjście z tym nucleo, na pewno byłoby prościej, ale jakby nie patrzeć to do każego kitu deweloperskiego jest dostępny przykładowy kod. Z biblioteką Cube też nie ma problemu, HAL składnią i funkcjami jest bardzo podobobny do Std, więc pewnie skończy się na tym, że będę to pisał przy pomocy właśnie tej bilbioteki. Zastanawiam się jednak nad tą płytką: http://www.st.com/content/st_com/en/products/evaluation-tools/solution-evaluation-tools/motor-control-solution-eval-boards/steval-spin3202.html Co o niej myślicie? Posiada od razu mikrokontroler ten sam co na płycie ZL, gotowy stopień wyjściowy i możliwość podłączenia HALL/enkoder, jest również pomiar napięcia wejściowego silnika oraz pomiar prądu fazy i możliwość sterowania sensorless i sensored. Także wszystko co chciałem. Mam tylko pewne wątpilwości, powiedzcie czy się mylę. Pomiar prądu jest tylko w 1-fazie, więc jak zatem poprawnie mierzyć moc wejściową silnika? I jak tutaj odbywa się sterowanie bezczujnikowe? I druga rzecz: wejście na czujniki halla i enkoder są na tych samych pinach, więc nie jestem w stanie otrzymywać informacji z nich obu na raz, da się to jakoś rozwiązać? Tutaj nota pdf: http://www.st.com/resource/en/user_manual/dm00428288.pdf marek1707, coś takiego miałeś na myśli? Rozwiązanie z źródłem prądowym i MOSFETem jako obciążenie wydaje się lepszym pomysłem niż kilka zwykłych rezystorów, lepiej się to będzie prezentować i mniej elementów mocy. Jakby nie było to przy rozwiązaniu ze wzmacniaczem i tak potrzebuję jakiś rezystor mocy, lepiej zastosować 1, niż 3. Tylko teraz pomiar prądu i napięcia na wyjściu jakoś będzie trzeba zrealizować. Pomiar prądu nie będzie raczej problemem, czujników jest sporo, ale jak z napięciem wyjściowym? EDIT: rezystor R1 dałem wartość 330mΩ tak by przy prądzie 3A odłożyło się naięcie około 1V, wtedy moc na nic to około 3W. Wypełnienie 90% odpowiada uśrednionemu PWM jako napięcie około 3V.
  4. Paulo

    Prędkościomierz i zerowanie licznika

    Szkoda, że edytowałeś kod, a nie zostawiłeś poprzedniej wersji. Zastanawiałem się czy to 7 sekund wybrałeś świadomie czy tak strzelałeś, bo według twojego kodu czas 7 sekund pomiędzy zwarciami kontaktronu daje prędkość około 1km/h, czyli około 27cm\s. No nic tak jak pisałem wcześniej ja bym zmienił zmienną last_event ze statycznej na globalną volatile i w pętli głównej sprawdzał bym warunek coś w rodzaju: if (millis() - last_event >= zerowanie) { rpm = 0; predkosc = 0; } wtedy pozbywasz się dodatkowych zmiennych czas1,2,3. Jednak dalej nie jest rozwiązany problem z zerowaniem prędkości, gdy akurat zatrzymasz koło tak by magnes znajdował się około kontaktronu. Na pewno nie będzie to stały sygnał stanu niskiego, bo koło może się przesuwać +- parę cm w przód i w tył i wtedy masz bardzo dużo impulsów w krótkim czasie, więc wyliczona prędkość będzie bardzo duża. Nie napisałeś tak poza tym do czego to konkretnie będzie wykorzystane, mierzysz prędkość czego? Bo Gdybyś znał, lub założył jakąś maksymalną prędkość np 10km/s to wtedy mógłbyś obliczyć minimalny czas pomiędzy zwarciami kontaktronu (dla 10km\s half_revolution_time=720) i poniżej tego czasu również ignorowałbyś pomiary, wtedy warunek byłby taki: if (millis() - last_event >= zerowanie || half_revolution_time <= 720) { rpm = 0; predkosc = 0; }
  5. Paulo

    Prędkościomierz i zerowanie licznika

    Wszystko przez to, że zmienną half_revolution_time ktora używasz do obliczenia prędkości zmieniasz w przerwaniu od kontaktronu. To moze zostac, a prosciej bedzie to zrobić w ten sposob by zalozyc sobie jakis maksymalny czas pomiedzy zwarciami kontaktronu i powyzej tego czasu zalozyc ze stoimi w miejscu i wpisac do zmiennej predkosc wartosc 0 i dopiero potem ja wypisywac. Najprosciej zrobic zmienna last_event globalna i z niej korzystac w petli głównej.
  6. O to właśnie mi chodziło, że jednak rezystory w zależności ile ich dam to będą obciążeniem o bardziej lub mniej skokowej zmianie, dlatego zastanawiałem sie nad tym mosfetem. Idea super, idę w to. Tylko tak, z tego co piszesz to sterowac mam mosfetem przez źródło pradowe, i nie bardzo wiem dlaczego. Przeciez w zależności od tego jakie napiecie dam na jego bramke to on sie bardziej lub mniej otworzy i bedzie mial wieksza lub mniejsza rezystancje wewnetrzna. Zrozumiał bym zrodlo pradowe w obwodzie DS by jednak zabezpieczyć uklad przed calkowitym otwarciem kanalu mosfetu (zwarcie na pradnicy) i ograniczeniem tego pradu, tylko wtedy i tak znow bylyby straty mocy na tym zrodle i to pewnie nawet wieksze niz na tym mosfecie. Mozesz mi to jakoś rozjaśnić, lub podać literaturę, lub nawet samą nazwę zagadnienia bym wiedzial czego szukac konkretnie? Niestety w większości wszedzie pisza same ogolniki. Co do radiatora z wentylatorem to faktycznie, koszt niewielki, dodatek kodu również a wyglada znacznie lepiej. Dzieki I jakbyś się jeszcze ustosunkował do zastosowania silnika z podlaczonym rownoczesnie enkoderem i czujnikami halla po jednej stronie walu, a po drugiej samo sprzeglo z pradnica? Najlepszy pomysł?
  7. Dobra, praca rusza do przodu. Nie odpowiadałem tyle czasu, bo bez sensu było zastanawianie się nad wszystkimi możliwościami bez żadnego ukierunkowania. Uczelnia mnie wspomoże finansowo, więc zdecyduję się na ten gotowy zestaw deweloperski. Zawęziło nam się grono komponentów, więc można zacząć wybierać. Ogólnie to pomysły macie świetne, dzięki bardzo. Więc tak: Będą 2 silniki BLDC o podobnej mocy. Pierwszy sterowany na pewno z czujnikami Halla i również z enkoderem (wtedy pomiar prędkości byłby na nim oraz byłaby możliwość zastosowania później algorytmu sterowania sinusoidalnego). Albo enkoder po drugiej stronie na wale łączącym tak jak pisał marek1707. Drugi najlepiej bezczujnikowy BLDC służący jako obciążenie (prądnica). Z niego na prostownik 3F i potem obciążenie regulowane. (pomysłem też było by 1 silnik miał czujniki halla, a 2 silnik enkoder i w razie zmiany algorytmu sterowania je przepinać po prostu, ale gdy wszystkie informacje mamy z 1 silnika to można zrobić ładne porównanie metod sterowania). Potrzebny jest pomiar mocy wejściowej silnika, zatem poszukuję drivera, który będzie mógł mierzyć od razu prądy w fazach, moc wyjściowa to już prostsza sprawa bo wystarczy mierzyć prąd już po wyprostowaniu. Czyli po kolei: 1. Sterowanie z mikrokontrolera STM32F103 z platformy edukacyjnej ZL27ARM (częściowo narzucone, aczkolwiek tutaj też mam dowolność, z tym, że jak wybiorę coś innego to dostanę mniejsze wsparcie od promotora ). Informacje w obie strony pomiędzy platformą a sterownikiem(silnikami) raczej przez złącze IDC z gniazdem zamontowanym gdzieś na płytce, tak by podłączenie do stanowiska było maksymalnie najprostsze i wolne od błędów. 2. Najważniejsza rzecz: sterownik. Powinien mieć możliwość podłączenia czujników halla, enkodera, pomiar prądów faz i napięcia BEMF, (aczkolwiek enkoder i czujniki halla mogę podłączyć wprost do mikrokontrolera) no i oczywiście gotowy stopień mocy dla silnika. Najlepszy wydawałby się ten: http://www.st.com/content/st_com/en/products/evaluation-tools/solution-evaluation-tools/motor-control-solution-eval-boards/steval-ihm032v1.html z tym, że sterownik do 150W to trochę przesada(zwłaszcza, gdy myśli się o mocach silników rzędu 20W na stanowisko też typowo edukacyjne..) poza tym 460zł za sam sterownik to trochę sporo, nawet mimo, że uczelnia płaci. Następny w kolejce byłby ten: http://www.st.com/en/evaluation-tools/steval-spin3201.html z tym, że nie ma pomiaru BEMF, no i posiada mikrokontroler na "pokładzie" Następnie dedykowane do Nucle: http://www.st.com/content/st_com/en/products/ecosystems/stm32-open-development-environment/stm32-nucleo-expansion-boards/stm32-ode-move-actuate-hw/x-nucleo-ihm08m1.html http://www.st.com/content/st_com/en/products/ecosystems/stm32-open-development-environment/stm32-nucleo-expansion-boards/stm32-ode-move-actuate-hw/x-nucleo-ihm07m1.html z tym, że prezentowało by się to dość dziwnie w połączeniu z płytą ZL27ARM. No nie wiem, doradźcie proszę coś bo mam mętlik. W sumie nie ograniczam się tylko do tych od firmy ST, może być dowolna, ale w nich dokumentacja wydaje mi się najlepsza, aczkolwiek jak zawsze różnie to bywa. 3. Dobór silników na razie zostawmy, póki nie zdecyduję się na któryś sterownik. Załóżmy tylko że moc maks 20-30W raczej na 24V by ograniczyć prąd. Moc nie duża, bo to ma być stanowisko edukacyjne. Myślę, że coś takiego: http://www.wobit.com.pl/produkt/8906/silniki-bldc-seria-bg/bg32x20-24vdc-/ z tym, że mógł by mieć większą prędkość znamionową wtedy sterowanie prędkości mogłoby się odbywać w większym zakresie 4. Prostownik 3F z diodami i pomiar prądy wyjściowego. To również narazie pomińmy, jak już będzie wybrany silnik to się dobierze. 5. Obciążenie: Tutaj potrzebuję rady. Nie chcę stosować silników o zbyt dużej mocy, bo wtedy na obciążeniu, które miało być w postaci "drabinki" przełączanych rezystorów musiały być tracona ogromna moc w postaci ciepła. Wiem, że można też stosować Mosfety jako sztuczne obciążenie, tylko nie wiem jak to wtedy wygląda. Nie chodzi mi o podłączenie, ale o samą logikę działania i obliczenia do tego, jak się dobiera wtedy mosfet (no i oczywiście radiator do niego, ale tu już literatury jest dużo). To by chyba było tyle, wydaje mi się, że w miarę to przemyślałem, ale pewnie w praniu wyjdzie jeszcze ile rzeczy pominąłem. EDIT: FlyingDutch świetna rzecz, nadawało by się jak najbardziej, z tym, że znów się muszę zastanowić, bo działa to tylko na bibliotece HAL/LL, i znów jak się zdecyduję na tą bibliotekę to mam mniejsze wsparcie od promotora i jestem skazany na siebie, bo wolał bym to zrobił na bibliotece STDperiph..
  8. To może trochę inaczej, byśmy myśleli wszyscy w dobrą stronę. Jest to projekt inż, małe stanowisko laboratoryjne, gdzie głównym jego zadaniem jest sterowanie prędkością i kierunkiem silnika BLDC, także wykluczone są gotowe sterowniki tych silników z zintegrowanymi mikrokontrolerami, czy innymi programowanymi prędkościami poprzez zmianę samego rezystora. Zależy mi, aby sterowniki sterowały samymi tranzystorami(z lub bez programowymi czasami martwymi), a ja za pomocą wyjść mikrokontrolera będę "sterował" tymi driverami. Silnik DC jako obciążenie to taki luźny pomysł, by jednak nie była to sztuka dla sztuki samego sterowania samą prędkością, a jednak coś mierzalnego, więc przy okazji jest możliwość zdejmowania charakterystk tych silników. Jak wpływa obciążenie na prędkość itp. Można jako obciążenie zrobić coś innego, jednak śmigło nie jest dobrym pomysłem, bo doszła by sprawa bezpieczeństwa. Poza tym nie miałbym wpływu na wielkość tego obciążenia( zależne by było tylko od prędkości obrotowej). Musi to być obciążenie nazwijmy to "elektryczne", czyli coś jak tutaj, że w obwód wirnika dokładam dodatkową rezystancję, i zmniejszając tą rezystancję aż do stanu zwarcia silnika DC pracującego tutaj jako generator stawiamy największe obciążenie naszemu badanemu silnikowi BLDC. Pytanie tylko czy dla takich prądów myślę tutaj o około 2A, zatem na generatorze zakładając nawet sprawność 95% też cudów nie będzie, więc jakichś wielkich zakłóceń i iskier nie powinno być. Wielkość i masa silników również nie ma żadnego znaczenia, jest to stanowisko zatem z założenia jest stacjonarne. Mocowanie tak by byłą możliwość stosować różne średnicę wałów to jak najbardziej, dobry pomysł, rozważę to, bo nad sprzęgnieciem walów ze sobą jeszcze szczególnie nie myślałem. Dokładnie o te mi chodziło na 600V. Uznałem, że raczej aż tak się nie dobiera elementów "przewymiarowanych". Czyli taki sterownik mosfetów: https://www.daedalus.ei.tum.de/attachments/article/257/IR2110_IR2110S_IR2113_IR2113S.pdf mówisz, że bez problemu wysteruje i pozostawi włączony górny tranzystor bez dodatkowych przetwornic dc/dc, lub bootstrapu? Same robią sobie "pływające" napięcie odniesienia. I może pracować nawet do 100% PWM?
  9. Witam was, potrzebuję waszej rady i doświadczenia, gdyż chciałbym uniknąć sytuacji, w której się okaże, że od początku projekt idzie w złą stronę, a zwłaszcza cześć z doborem elementów. Założenia: małe stanowisko składające się z silnika bezszczotkowego prądu stałego oraz sprzęgniętego z nim trwale silnika szczotkowego prądu stałego, który służy jako obciążenie(Zmienne przez "drabinkę" rezystorów). Sterujemy prędkością silnika BLDC, odczytujemy prędkość na DC (z enkodera). Prędkość i kierunek wyświetlana na małym LCD. W ten sposób mogę ściągnąć np charakterystyki mechaniczne BLDC przy różnych obciążeniach. Sterowanie poprzez STM32F10 konkretnie STM32F103VBT6. 72MHz. Napięcie logiki 5VDC(ew. 3.3), części roboczej załóżmy max 24VDC. Problem (i jednocześnie zaleta) w tym projekcie jest taki, że mam całkowitą dowolność co do mocy silników i zakresu prędkości, w zasadzie mam całkowitą dowolność we wszystkim a ograniczają mnie jedynie koszty(aczkolwiek tutaj też nie koniecznie, bo możliwe, że dostanę dotację z uczelni na projekt, lecz póki co załóżmy najgorszy scenariusz, że muszę wszystko kupić sam). Zacznijmy może po kolei(niestety mogę się mylić w wielu kwestiach więc proszę o poprawienie mnie): Silnik BLDC 3-fazy(ilość biegunów dowolna) sterowanie najprostsze trapezowe zatem silnik musi być z czujnikami Halla, a nie enkoderem. Sterowanie raczej bipolarne, ze względu na równe obciążenie tranzystorów, chyba, że ze względu na przewidziane raczej małe moce i prądy to będzie można zastosować zamiast półmostków z 2 N-MOSami, parę komplementarną P i N, wtedy sterowanie unipolarne samego mocniejszego dolnego N-MOSFETu i ograniczymy tracone moce przy przełączaniu PWM. Silnik raczej nie może być wysokoobrotowy, by nie rozerwało komutatora w sprzęgniętym DC i by ograniczyć iskrzenie na nim(aczkolwiek prądy nie będą raczej duże więc to może nie mieć znaczenia) zatem wydaje mi się, że te do dronów odpadają. Odpowiedni wydawałby się taki(ma wszystko, z tym, że moc dużo za duża i cena) http://www.akcesoria-cnc.pl/?menu=produkt&id=1360 Innym pomysłem jest zastosować BLDC z przekładnią do obniżenia obrotów przekazywanych na silnik DC. np taki: http://allegro.pl/maxon-silnik-bezszczotkowy-z-przekladnia-157-1-i7256339671.html#thumb/4 z tym, że jego moc już wydaje mi się troszkę za niska. I wtedy też pojawia się problem przy sterowaniu prędkością obrotową BLDC(bo mierzymy ją na silniku DC, który obracał będzie się n-krotnie wolniej i stracimy dokładność). Innym rozwiązaniem jest też zastosować po prostu wysokoobrotowy silnik DC, ale do takiego musiałbym osobno dokupić i zamontować enkoder, bo nie znalazłem takiego z zintegrowanym.(To rozwiązanie w sumie wydaje się najprostsze) Silnik DC dowolny, byleby miał zamontowany enkoder(raczej optyczny, ale może być też inkrementalny by rozróżnić kierunek obrotu, chociaż kierunek wirowania znamy już z samego programu sterującego). Ważna jest prędkość znamionowa silnika DC z przyczyn wypisanych wcześniej. Wybór tego silnika jest sprawą drugorzędną, byle by spasował do wybranego BLDC, nie potrzebuję również jego szczegółowej dokumentacji. Wystarczający byłby zatem taki: http://allegro.pl/silnik-enkoderem-kitashiba-dc-24v-1a-4400-obr-min-i7280727659.html#thumb/1 Dalej sprawa z driverem mostków. Z uwagi na fakt, że głównie skupić bym się chciał na stronie programowej projektu(mimo, że wybrałem najprostszy rodzaj sterowania) to najlepszym rozwiązaniem byłby scalony 6-kanałowy sterownik coś jak HIP4086, lub SA305, lecz ciężko z nimi z dostępnością. Mogę też zastosować 3 osobne drivery na półmostki jak np. FAN3278, lub TC4428. I tutaj też jest problem, że wybór ich jest ogromny, a nie mam w tym doświadczenia. Jedyna pociecha, że odpadają te wysokonapięciowe. Powinny móc przełączać i być w stanie rozładować bramki tak myslę, że 20kHz PWM(czyli praktycznie wszystkie drivery..) wystarczy, byleby wyjść poza zakres słyszalny, wiadoma też jest sprawa z czasem martwym, i dopiero po jego ustaleniu będę się zastanawiał nad konkretną wartością częstotliwości PWM, ale on już zależy znów od dobranych tranzystorów. Może on być ustalany przez drivery, lecz nie musi, bo stm32 powiada w timerach wbudowany układ generowania czasu martwego, więc można stworzyć 2 komplementarne sygnały PWM(przy korzystaniu z tego rozwiązania dobrze by było by driver miał wejścia normalne i odwrócone) Dobór tranzystorów również oczywiście dowolny, ale myślę, że najpierw trzeba dobrać silniki, a potem się nad nimi zastanowić. Spraw poruszyłem bardzo dużo na raz, ale no wszystkie są ze sobą powiązane i jedne zależą od drugich i na odwrót także musiałem tak się rozpisać. Ciężko będzie się pewnie odnieść do takiego postu, ale mam nadzieję, że pomożecie mi z doborem elementów i wyrazicie opinie o projekcie, czy założenia są słuszne i co byście zrobili inaczej. Dziękuję za wytrwałość i czekam na odzew
  10. Paulo

    Obsługa wyjścia przez dwa porty

    Problem jest w tym, że nie możesz po prostu dodac kolejnego warunku, by wchodzić do pętli również, gdy dioda jeat zgaszona, bo wtedy wartość zmiennej stan bedzie tak naprawde tylko zależna od tego czy dioda jest zapalona czy nie i nie bylbys w stanie jej dodatkowo zmienic za pomoca przycisku. Tak szczerze mówiąc to nie rozumiem jak to sobie wyobrażasz sterowanie taka dioda. Chcesz ja zaswiecic gdy inna sie swieci. Zgasic gdy inna jest zgaszona. A dodatkowo wlaczac i wylaczac ja przyciakiem. Zastanów się co w przypadku gdy dioda na pinie 13 sie swici. Ty naciskasz przycisk, zmieniasz stan na low, ale przez to ze dioda na pinie 13 dalej sie swieci to automatycznie znowu ustawi wartosc zmiennej state na high. Albo musisz nadac czemus wyzszy priorytet, ale w tym tez nie widze sensu, ale rozwazyc jeszcze raz zalozenia projektu.
  11. Paulo

    Obsługa wyjścia przez dwa porty

    Zastanów się kiedy wykona się kod w klamrach wewnątrz pierwszego if'a. Czyli kiedy wyrazenie w pierwszym if'ie jest prawdziwe. Krócej mówiąc zastanów się kiedy wykonuje się kod zmieniający stan zmiennej state.
  12. Paulo

    Obsługa wyjścia przez dwa porty

    Zauważ, że w warunku sprawdzasz, czy stan na pinie 13 jest wysoki. Zatem, gdy jest to wykonuje się kod zawarty w klamrach (negacja zmiennej state). Dlatego led się zapali, gdy był zgaszony. Lecz w warunku nie sprawdzasz, czy stan na pinie jest niski, więc gdy jest to warunek nie jest prawdziwy i kod w środku się nie wykona, zatem LED się nie zgasi.
  13. Paulo

    USBASP firmware uptade by arduino

    To nie jest głupie pytanie, takie czeskie błędy są bardzo częste Niestety nie tym razem.
  14. Paulo

    USBASP firmware uptade by arduino

    Płytki stykowej używałem tylko do wyprowadzenia diod sygnalizujących programowanie, lub błąd, ale odrzuciłem ją, pozmieniałem również wszystkie przewody, a zworkę JP2 zlutowałem krótkim przewodem(przedtem był skręcona przewodem) i sukces. Zakłóceń się pozbyłem i programowanie przebiegło prawidłowo. C:\Programy\Arduino\hardware\tools\avr\bin>avrdude -C ../etc/avrdude.conf -c avr isp -P COM4 -b 19200 -p m8 -U flash:w:usbasp.atmega8.2011-05-28.hex avrdude: AVR device initialized and ready to accept instructions Reading | ################################################## | 100% 0.05s avrdude: Device signature = 0x1e9307 avrdude: NOTE: FLASH memory has been specified, an erase cycle will be performed To disable this feature, specify the -D option. avrdude: erasing chip avrdude: reading input file "usbasp.atmega8.2011-05-28.hex" avrdude: input file usbasp.atmega8.2011-05-28.hex auto detected as Intel Hex avrdude: writing flash (4700 bytes): Writing | ################################################## | 100% 7.50s avrdude: 4700 bytes of flash written avrdude: verifying flash memory against usbasp.atmega8.2011-05-28.hex: avrdude: load data flash data from input file usbasp.atmega8.2011-05-28.hex: avrdude: input file usbasp.atmega8.2011-05-28.hex auto detected as Intel Hex avrdude: input file usbasp.atmega8.2011-05-28.hex contains 4700 bytes avrdude: reading on-chip flash data: Reading | ################################################## | 100% 4.20s avrdude: verifying ... avrdude: 4700 bytes of flash verified avrdude: safemode: Fuses OK avrdude done. Thank you. Compiled special for http://forum.atnel.pl (v5.11.1) Ale co z tego skoro programator dalej jest niesprawny. mkAVRCalculator przy próbie sprawdzenia dalej oddaje: avrdude.exe: set SCK frequency to 2000 Hz avrdude.exe: error: programm enable: target doesn't answer. 1 avrdude.exe: initialization failed, rc=-1 avrdude.exe: AVR device initialized and ready to accept instructions avrdude.exe: Device signature = 0x000000 avrdude.exe: Yikes! Invalid device signature. avrdude.exe: Expected signature for ATMEGA8 is 1E 93 07 avrdude.exe done. Thank you. Compiled special for http://forum.atnel.pl (v5.11.1) A ArduinoIDE przy próbie programowania dalej z tym samym błędem co poprzednio(nie znajduje portu szeregowego). Wiem, że przyczyn błędu rc=-1 nie jest dużo, ale myślę, że: - błędne podłączenie można odrzucić, bo chociażby wgranie firmware przebiegło prawidłowo - nie sprawdzam gołego AVR, tylko wprost na arduino uno/pro mini, a tam zewnętrzny kwarc jest dołączony -zasilanie mikroprocesora jest również na poprawne, wprost z programatora usb(wystarczające 4.9V pomiędzy pinem 5V i GND), dawałem również zewnętrzne zasilanie 5V(oczywiście masy połączyłem) i bez różnicy Co do sterowników to też są raczej poprawne, zainstalowane wprost z mkAVRCalculator. Jakieś pomysły co dalej z tym począć? PS: wiem, że to programator za parę zł i mogę kupić bez problemu nowy, lepszy, ale chodzi o to, że on po prostu powinien działać. Chodzi też o samo rozwiązanie problemu
  15. Paulo

    USBASP firmware uptade by arduino

    Jest postęp, po wielu próbach udało mi się wgrać nowe oprogramowanie do programatora, lecz czy do końca wszystko przebiegło poprawnie to pewności nie mam. Oto okno dialogowe przy wgrywaniu: C:\Programy\Arduino\hardware\tools\avr\bin>avrdude -C ../etc/avrdude.conf -c avr isp -P COM4 -b 19200 -p m8 -U flash:w:usbasp.atmega8.2011-05-28.hex avrdude: AVR device initialized and ready to accept instructions Reading | ################################################## | 100% 0.06s avrdude: Device signature = 0x1e9307 (probably m8) avrdude: NOTE: "flash" memory has been specified, an erase cycle will be perform ed To disable this feature, specify the -D option. avrdude: erasing chip avrdude: reading input file "usbasp.atmega8.2011-05-28.hex" avrdude: input file usbasp.atmega8.2011-05-28.hex auto detected as Intel Hex avrdude: writing flash (4700 bytes): Writing | ################################################## | 100% 7.54s avrdude: 4700 bytes of flash written avrdude: verifying flash memory against usbasp.atmega8.2011-05-28.hex: avrdude: load data flash data from input file usbasp.atmega8.2011-05-28.hex: avrdude: input file usbasp.atmega8.2011-05-28.hex auto detected as Intel Hex avrdude: input file usbasp.atmega8.2011-05-28.hex contains 4700 bytes avrdude: reading on-chip flash data: Reading | ################################################## | 100% 4.22s avrdude: verifying ... avrdude: 4700 bytes of flash verified avrdude: safemode: Sorry, reading back fuses was unreliable. I have given up and exited programming mode avrdude done. Thank you. Niby wszystko się wgrało, lecz dalej problem z safemode i odczytaniem fusebitów się pojawia. Teraz, gdy próbuję wgrać program do Arduino przez programator wyskakuje mi komunikat: avrdude: error: program enable: target doesn't answer. 1 avrdude: initialization failed, rc=-1 Double check connections and try again, or use -F to override this check. wybrany port szeregowy nie istnieje albo Twoja płytka nie jest podłączona mkAVRCalculator również nie odnajduje urządzenia, lub wyświetla komunikat rc=-1 Jakieś pomysły? Powiem jeszcze, że przed wgraniem zapisałem do pliku bin oryginalny software, który był na programatorze tak na wszelki wypadek. Po wgraniu nowego softa i pojawieniu się tych błędów stwierdziłem, że wgram poprzedni (orginalny) soft. Po wgraniu, różnica w komunikacie co do arduino była taka, że wyświetlany był dodatkowo komunikat "cannot set sck period. please check for usbasp firmware update" także powróciłem do nowego softu i problem jest taki jaki opisałem, czyli sławne rc=-1.
×