Skocz do zawartości

[AVR] Sterownik silnika elektrycznego oparty na ISOBUS


rafisoltys

Pomocna odpowiedź

😳 Dzięki 🙂

Zmiana dala taki efekt:

Dla przykładu:

pwm= 3060 * 85 / 1000 = 260 ,a program wyświetla = -2

inny przykład z monitora:

pwm= 2940*85 / 1000 = 249,9 , a program wyświetla = -12

w innym miejscu monitora:

pwm=3060*85/1000 = 260 ,a program wyświetla = -7

Program błędnie liczy pwm. Czy wrzucić to również to atomic block ?

Link do komentarza
Share on other sites

Zmieniłem rpm z int na long jednak dalej źle liczy.

 // read RPM
#include <MsTimer2.h>
#include <util/atomic.h>

#define silnikPIN 5
#define diodamaxpwmPIN 3
#define diodalowpwmPIN 4
#define diodaworkpwmPIN 6


volatile int rpm = 0;
int obroty = 0;
int rpmstat = 0;
long pwm=0;

void pomiar(){
rpm= obroty*60 ;
obroty=0; // wyzeruj licznik obrotów
}
void rpm_fan(){
obroty++;
}
void setup(){

Serial.begin(9600); // inicjalizacja połączenia szeregowego
attachInterrupt(0, rpm_fan, RISING); // inicjalizacja przerwania  INT0 (PIN2) uruchamiajacej funkcje rpm_fan, reagujacego ba zbocze rosnące
 MsTimer2::set(1000, pomiar); // 500ms period
 MsTimer2::start();
 pinMode(silnikPIN, OUTPUT);
 pinMode(diodalowpwmPIN, OUTPUT);
 pinMode(diodaworkpwmPIN, OUTPUT);
 pinMode(diodamaxpwmPIN, OUTPUT);
 }
void loop(){
  ATOMIC_BLOCK(ATOMIC_RESTORESTATE)  
{  
rpmstat=rpm;
}  

Serial.print("RPM =\t"); //wyświetl "RPM"
Serial.print(rpm); // wyświetl wartość prędkości obrotowej (RPM)
Serial.print("\t Liczba obrotów =\t"); //wyświetl "Hz"
Serial.println(obroty); //wyświetl zliczoną wartość impulsów (obrotów) 


pwm = (rpmstat * 85)/1000 ; // oblicz wartość pwm z funkcji liniowej (0 PWM dla 0 RPM i 255 PWM dla 541 RPM)

Serial.print("PWM =\t"); // wyświetl dla testu wartość PWM
Serial.println(pwm); // digitalWrite(5,pwm); ustaw PWM o wartości pwm na PIN 5

analogWrite(silnikPIN, pwm); // podaj pwm na sterowanie silnikiem

if (pwm<64) // wartość pwm < od 25% (minimalna wartosc dla silnika)
{digitalWrite(diodalowpwmPIN, HIGH);// zapal diodę lowpwm
}
else { // w przeciwnym razie jeśli
if(pwm>=64 && pwm<=255) //jesli pwm pomiedzy 25% i 100%
{
 digitalWrite(diodaworkpwmPIN, HIGH); //zapal diodę polpwm
}
else
{if (pwm>255) // jesli pwm wiekszy niz 255
{digitalWrite(diodamaxpwmPIN,HIGH);} // zapal diodę maxpwm
else
{}
}
}
}

Dodałem również sterowanie PWM na pin 5.

Oraz obsługę diód sprawdzających działanie programu.

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Ech, ciężko idzie. Przecież obliczenia wykonujesz w tej linii:

pwm = (rpmstat * 85)/1000 ;

Co z tego, że pwm zmieniłeś na długi, jeśli "wchodzący" do obliczeń rpmstat jest krótki i wszystkie argumenty liczbowe także. Arytmetyka jest 16-bitowa a potem bzdurny wynik jest rozszerzany do 32-bitów.

Zostaw wszystkie zmienne jak były albo lepiej zamień wszystkie int-y na typ uint16_t bo obliczenia bez znaku robi się szybciej a przy okazji masz zakres 65535, i zrób tak:

pwm = (uint16_t)(((uint32_t)rpmstat * 85UL)/1000UL);

Powinno zadziałać.

Nie wspominając, że mnożenie przez 85 i dzielenie przez 1000 to to samo co:

pwm = (rpmstat * 17)/200;

co przy zmiennych bez znaku (zakres do 65535) zadziała aż do rpmstat<=3855 bez uciekania się do 32-bitów.

Link do komentarza
Share on other sites

Rozumiem, ze polecenia uint16_t, uint32_t i UL informują kompilator o typie zmiennej i wymuszają na nim, aby traktował określone wartości jako konkretny typ zmiennej ?

Oczywiście program działa doskonale 🙂 Zdobyłem na tym forum na prawdę bardzo dużo wiedzy.

Przygotuję jutro hardware i sprawdzę działanie.

Mam jeszcze dwa pytania:

Czy zmniejszając liczbę diód, ATTIny13 poradziłby sobie z tym programem ?

INT0 jest. PWM jest. Brakuje tylko wsparcia dla biblioteki Ms.Timer2. Da się to jakoś w miarę łatwo ogarnąć ?

Gdybym chciał zwiększyć dokładność i mierzyć czas pomiędzy dwoma zboczami narastającymi sygnału prędkości. Czy da się do tego celu wykorzystać polecenia z Arduino [pulsIn() mierzy tylko czas występowania stanu wysokiego] ??

Link do komentarza
Share on other sites

To nie są żadne "polecenia" tylko operacje rzutowania. Musisz koniecznie poczytać o języku w którym próbujesz pisać, bo dopóki go nie znasz to tak trywialne rzeczy stają się problemami nie do przejścia. Kup jakąś dobrą książkę i poświęć na nią dwa tygodnie a w przyszłości sam sobie podziękujesz.

Tiny13 ma wszystkiego jeden timer i to nim musisz wszystko opędzić:

- PWM - da się, na szczęście wbudowali aż dwa kanały sprzętowe.

- Pomiar częstotliwości impulsów prędkości - timer pracujący w trybie PWM zgłasza też przerwania okresowe od własnych przepełnień. Gdybyś PWM puścił z jakąś sensowną częstotliwością (np. 4.8MHz/8/256=2343,75Hz) a w obsłudze przerwania TOV0 zrobił licznik zliczający modulo 2343, to miałbyś 1 sekundową podstawę czasu do "łapania" liczby impulsów wejściowych z wystarczającą dokładnością. Dalej tak samo jak obecnie.

- UART - jeśli w ogóle starczy pinów, to warto jeden poświęcić na wyjście danych szeregowych do konsoli. Nadawanie znaków musisz tu zrobić programowo, ale mając przerwania okresowe zupełnie spokojnie napiszesz własną funkcję, nawet pracującą w tle.

Ograniczeniem będzie zapewne pamieć FLASH, bo robisz jednak trochę obliczeń. Trzeba będzie pogłówkować jak to zoptymalizować i pomieścić wszystko w malutkim Tiny. Bez doświadczenia może być trudno.. Jeśli nie jest to komercyjny projekt gdzie liczysz na zysk pod warunkiem oszczędzenia 2zł, nie pchaj się w to. Jeszcze nie teraz.

------------------------

EDIT: Ale możesz, dla sportu, z ciekawości lub dla zwykłej nauki spróbować zaimplementować te wszystkie mechanizmy na procku klasy mega328 wykorzystując tylko Timer 0 🙂 Akurat ten blok jest bardzo podobny do tego w Tiny. To może być ciekawe ćwiczenie a przy okazji zobaczysz jak bardzo przestrzelisz ten docelowy 1K FLASH i malutki (64 bajty powyżej rejestrów?) RAM.

  • Lubię! 1
Link do komentarza
Share on other sites

Po zmontowaniu sprzętu pojawił się standardowo problem.

Napięcie na wyjściu z stabilizatora wynosi jedynie około 2 V.

Sprawdziłem wszystkie połączenia i wydają się być okej.

Do testów używam zasilacza 4A. Czy zbyt mały prąd może być problemem ?

Link do komentarza
Share on other sites

Pobór prądu czego? Przecież procesor pobiera jakieś mA a chyba nie podłączyłeś jeszcze silnika, prawda?

Układy prototypowe buduje się po kolei, stopniowo.Tutaj musisz zacząć od zasilacza tj. stabilizatora. Montujesz filtr wejściowy i sam stabilizator z jego kondensatorami wyjściowymi. Mierzysz napięcie na wyjściu. Jeśli jest 5V, idziesz dalej. Nie możesz podłączać procesora i cennych rzeczy do eksperymentu naukowego o nieznanym działaniu.

Przecież układ jest prosty. Zanim cokolwiek włączysz sprawdzasz dwa razy czy coś nie jest odwrotnie: dioda, kondensatory, stabilizator i czy połączenia są zgodne ze schematem. Pewne pomyłki są nienaprawialne więc bądź czujny.

Odłączasz wszystko od wyjścia 7805 oprócz jakiegoś kondensatora i ew. diodki LED pokazującej 5V, bierzesz woltomierz do ręki i sprawdzasz. Każdą odpowiedź poprzedź pomiarem:

1. Masz podawane 12V?

2. Masz ok. 12V na wejściu stabilizatora?

3. Masz 5V na wyjściu?

4. Czy coś się grzeje?

Dopiero gdy uzyskasz poprawne 5V możesz podłączać układy cyfrowe. Zamiast silnika dajesz oczywiście diodkę LED szeregowo z opornikiem 1k. Może być żarówka 12V.

Link do komentarza
Share on other sites

Podejrzewam, że Buzz11 się usmażył, gdyż silnik działał bez podłączonego sterowania, do tego MOSFET bardzo mocno się nagrzewał pomimo przykręcenia do aluminiowej obudowy.

Zamieniłem go na FQP50N06 i silnik zaczął działać choć sterowanie jest odwrotne (dla pwm=0 silnik pracuje z pełną mocą, dla pwm=255 silnik nie pracuje)

Przetestowałem oscyloskopem sygnał prędkości obrotowej. Sygnał daje ładny prostokąt. Jednak podłączenie go do uC powoduje, że odczyt prędkości wariuje. Gdy robiłem testy na wiatraczku komputerowym to podłączałem przewód sygnałowy rezystorem 1k do VCC wtedy uC pokazywał mi dobre wyniki. Czy tutaj też powinienem tak zrobić ?

Cały układ ma wspólną masę połączoną z wysokoprądowego gniazda zasilającego. Gniazdo sygnałowe ISOBUS posiada przewód sygnałowy oraz 12+ i Common GND. Czy sygnał powinienem podciągnać (czy pull-up) do 12+ przewodu ISOBUS czy może być z wysokoprądowego gniazda zasilającego ?

Powinienem sprawdzić napięcie pomiędzy +12 i GND tych dwóch przewodów ...

Link do komentarza
Share on other sites

To co napisałeś jest tak chaotyczne, że nawet nie wiem do czego się odnieść. Zamiast po kolei uruchamiać poszczególne obwody a następne testy bazować na już działających rzeczach Ty włączasz wszystko na raz i oczekujesz cudu.

Nawet te opisy są jak mieszanie kijem w rondlu z zupą grzybową. Raz coś brązowego a raz coś czerwonego z kropkami się pojawia...

Miałeś kłopoty z zasilaniem. Nie zająknąłeś się o tym ani słowem, nie wiemy czy masz je nadal czy to już jakoś poszło. Usmażyłeś tranzystor zamiast podłączyć go na końcu, gdy już wszystkie pomiary i wyjście PWM są zweryfikowane. Nie zastanawiasz się nawet dlaczego tylko wymieniasz na inny. Tak Cię uczyli pracy? Co gorsza masz oscyloskop a dopiero teraz dowiadujesz się, że PWM jest odwrotny..

Przetestowałeś sygnał prędkości obrotowej i piszesz, że nawet ładny. Ale nie wiemy, czy mierzyłeś na sygnale nieobciążonym, czy już z podłączonym Twoim dzielnikiem, czy na samym wejściu czy już na pinie procesora. Jakie poziomy napięć były na wejściu INT i jak szybkie zbocza. Coś tam widziałeś, ale co to tylko Ty wiesz. Oczekujesz jakiegoś komentarza? Pogłaskania po główce?

Tego kawałka o masach w ogóle nie rozumiem. Co chcesz podciągać? Może daj jakiś schemat czy coś.. A najlepiej czytaj te swoje posty przed wysłaniem, bo kaszana taka, że trudno cokolwiek sensownego radzić.

Jeśli traktujesz to jak pamiętnik to OK, pisz co chcesz a ja nie będą tracił czasu na czytanie, ale jeśli oczekujesz jakichś komentarzy nie spodziewaj się wiele po takich wpisach. Bez konkretów i jasnego oglądu sytuacji (schematy, liczby, czasy, napięcia, obrazy z oscyloskopu itd) możemy tylko się przysłuchiwać i współczuć (albo dobrze się bawić). Układ sprzętowo jest prosty jak drut a Ty masz kłopoty jak przedszkolak z tabliczką mnożenia. Niewiele rzeczy działa od razu więc metody krok-po-kroku są powszechnie stosowane i zdają egzamin. Może Ty też wprowadź trochę porządku i namysłu do tej swojej pracy a jeśli oczekujesz porad, informuj bardzo precyzyjnie o stanie projektu.

Link do komentarza
Share on other sites

Masz rację i biorę sobie Twoje uwagi do serca.

1. Zgodnie z ostatnim schematem, układ zasilania wykonałem na osobnej płytce pcb. Problem z jego działaniem spowodowany był brakiem połączenia pomiędzy OUT stabilizatora, a złączem zasilania uC. Uzupełniłem brakującą ścieżkę i wszystko działa ok.

2. PWM sprawdziłem oscyloskopem i jego przebieg był prawidłowy (100% stan wysoki dla 255 i 0% dla 0). Wychodzi na to, że tranzystor BC337 przewodzi gdy bazę podłączam do GND ?

3. W dzielniku napięcia rezystory R6 i R7 o wartościach 1k8 i 1k3 zastąpiłem rezystorami o wartościach 4k7 i 3k3 ponieważ posiadam tylko szereg E12.

4. Pomiar sygnału prędkości dokonałem bezpośrednio na końcówce 10m ekranowanego przewodu.

Niestety nie wykonałem pomiaru bezpośrednio na INT0. Nie wpadłem na to 🙁

Dokumentacja ISOBUS mówi, że Impedancja obciążenia powinna być większa od 3k Ohm, a

Impedancja źródła wyjściowego w stanie "LOW" powinna wynosić 100 + -10 Ohm.

Czy to jest istotne biorąc pod uwagę zmianę rezystorów (pkt. 3.).

5. Tranzystor BUZ11 zachowywał się dziwnie już od samego początku. Samo podłączenie źródła i drenu sprawiło, że silnik zaczął sam pracować. Gdy zmontowałem cały układ, silnik nie reagował na zmianę PWM w żaden sposób (ani nie zwiększał, ani nie zmniejszał swojej prędkości obrotowej) przy czym tranzystor bardzo mocno się grzał. Próba rozładowania bramki nie przynosiła żadnego rezultatu, stąd podjąłem decyzję o jego wymianie.

6. Z pojazdu do układu doprowadzone są dwa przewody. Jeden zasilający (+12V i GND ze specjalnego gniazda o max. obciążeniu 30A), który wykorzystuję tutaj do zasilania silnika i sekcji zasilania uC. Drugi natomiast oprócz sygnału prędkości obrotowej posiada również dodatkowe 2 przewody (+12V i GND).

Nie mam informacji czy oba +12V mają względem siebie ten sam potencjał.

Mój niejasny wybieg myślowy dotyczył tego, że podczas testowania układu jako źródło sygnału prędkości obrotowej wykorzystywałem 4 pinowy wiatraczek PC. Bezpośrednie podłączenie przewodu sygnałowego powodowało wyświetlanie losowych wyników prędkości obrotowej. Dopiero dodatkowe podłączenie tego przewodu przez rezystor 1k do 5V spowodowało, ze wynik był prawidłowy.

Czy taki zabieg stosuje się powszechnie ? Czy podobnie powinienem zrobić w przypadku wykorzystywanego przeze mnie sygnału z ISOBUS ?

marek1707, dziękuję Ci za Cierpliwość. Miej jej jeszcze trochę dla mnie 🙂

Link do komentarza
Share on other sites

Hoho, dzięki za taką odpowiedź. To rzadki przypadek.

1. Cieszymy się 🙂

2. Pamiętaj, że jedynka na pinie procka załącza tranzystor npn co wyłącza MOSFET. Dlatego jeśli chcesz zachować regułę w której większa liczba załadowana do OCR1x daje większe wysterowanie silnika, musisz ustawić odwrócony tryb pracy wyjścia OC1x. Z tym tranzystorem bipolarnym włączającym się przy zerze na bazie to raczej coś nie teges.. Pamiętaj, żeby podczas inicjalizacji programu i sprzętu tak ustawiać warunki początkowe, by wyjście było od samego początku wyłączone, tj. na pinie był stan wysoki. Po to masz rezystor podciągający do Vcc by npn był załączony w czasie RESETu, ale gdy program rusza to już Ty przejmujesz odpowiedzialność za pin wyjściowy. Najpierw programujesz kierunek pinu i jego stan, potem timer - jego tryb, wartość odpowiedniego OCR1x a na końcu bity odpowiedzialne za podłączenie (już poprawnie ustawionego) timera do pinu OC1x i tryb prosty/odwrotny PWM.

3. No jasne, warto się trzymać uznanego standardu.

4. Procesor reaguje na to co widzi na swoich pinach. Zawsze sprawdzaj co tam dostaje - czasem można się zdziwić, bo np. impedancja wyjściowa źródła sygnału jest duża i obciążenie jej dzielnikiem powoduje spadek amplitudy tak, że do pinu dociera już tylko wspomnienie oryginalnego sygnału. A jeszcze gdy ew. kondensator filtra jest za duży to zbocza się kładą i może nastąpić wykrycie kilku zmian stanów zamiast jednego. W przypadku gdybyś odczytywał pin programowo, można łatwo zrobić filtrowanie takich śmieci, ale w przypadku wejścia na sprzętowe przerwanie jesteś bezradny. Wszelkie kondycjonowanie sygnału musisz robić elementami zewnętrznymi tak, by do proca dochodził czysty przebieg cyfrowy. Przyjrzyj mu się dokładnie nie tylko co do poziomów wysoki/niski ale także obejrzyj zbocza. Co gorsza praca silnika może to w przyszłości popsuć więc trzeba będzie do tego pomiaru wrócić już po uruchomieniu napędu.

Jeżeli sygnałów na tym ISOBUS nie można obciążać bardziej niż 3k to zrobiłeś dobrze zwiększając rezystory. Pytanie tylko co jest gwarantowane dla tej rezystancji. Czy to że w ogóle coś się wtedy pojawi na wyjściu, czy poziomy będą wtedy co najmniej takie by pasowały do 5V procesora, nie wiemy. Bo Ty obciążasz teraz słabiej, ale na pewno jakaś zmiana (względem nieobciążonego źródła impulsów) będzie i musisz mieć pewność, że to co przyjdzie po podzieleniu opornikami wystarczy do poprawnego wysterowania pinu cyfrowego. Przy okazji: sprawdź w danych katalogowych jakich napięć wejściowych oczekuje w stanie niskim i wysokim procesor zasilany z 5V no i czy Twój dzielnik to spełnia. Możesz wskazać jakąś dostępną specyfikację standardu ISOBUS? Ta oryginalna jest płatna i to sporo, może ktoś zrobił jakiś skrót wymagań?

https://www.iso.org/standard/57556.html

5. Nigdy, przenigdy nie podłączasz żadnych tranzystorów w ten sposób, że ich elektroda sterująca (bramka czy baza) wisi w powietrzu. Jeśłi chces zmieć pewność, że montowany tranzystor będzie wyłączony, zwierasz bazę/bramkę do emitera lub źródła. W przypadku MOSFETów zostawianie bramki samopas jest jeszcze o tyle groźniejsze, że masz wtedy kondensator o wytrzymałości ±20V podłączony jednym końcem (kanał) do dużego układu a drugim (bramka) wystawionym na Twoje paluchy i to co lata w elektrostatyce. Czy pamiętasz, że jeden krok po dywanie produkuje jakieś kV napięcia statycznego? Pierwsze dotknięcie takiej "wiszącej" nóżki, nieważne czy włączonego czy wyłączonego układu załatwia izolację bramki i dalsze działanie tak zjaranego tranzystora jest losowe. Dlatego tak ważne jest, byś panował na sygnałem bramki zanim wlutujesz tranzystor mocy. Najpierw uruchamiasz procesor, program, mierzysz i oglądasz PWM i całą tę karuzelę po to by po upewnić się, że podłączasz MOSFET do - przynajmniej zgrubnie - dobrze działającego sterowania. A i też zaczynasz od obciążenia w drenie, które nie może nikomu zrobić krzywdy, np. małej LEDy czy żaróweczki.

6. Jeżeli jest specjalny pin zasilania mocy, z niego powinieneś napędzać całość. W Twoim układzie bardzo ważne jest by cyfrówka dostawała zasilanie razem z częścią silnopradową, bo MOSFET jest wyłączany obecnością 5V. Jeśli masz dwie masy w interfejsie ISOBUS (np. sygnałową i mocy), musisz je niestety obie połączyć w swoim układzie, najlepiej właśnie gdzieś w okolicach źródła tranzystora, bo względem masy "sygnałowej" dostajesz impulsy prędkości. Być może specyfikacja tego zabrania - tego nie wiem (i dlatego ważne jest zajrzeć do dokumentów) i wtedy musiałbyś użyć np. transoptora do izolacji od strony wejścia lub wyjścia. Reszta układu byłaby "oparta" na masie - odpowiednio: mocy lub sygnałowej.

Wiatraczek daje sygnał typu "open-collector" więc albo zwiera swoje wyjście do masy albo zostawia je wiszące w powietrzu - coś jak zestyk zwierny, który nie daje żadnego napięcia. Współpraca z tego typu wyjściami polega na podciąganiu ich do Vcc i dobrze zrobiłeś. Ponieważ nie znamy specyfikacji sygnałów ISOBUS, nic nie można powiedzieć. Napisałeś na początku:

"Stan wysoki powyżej 6,3 V

Stan niski poniżej 1,3 V"

ale przecież nie wiadomo w jakich warunkach było to mierzone. Czy zupełnie bez obciążenia, czy właśnie przy tych wspomnianych 3k, ale jak podłączonych? Do masy (jak dzielnik u Ciebie) czy co +12V? Zajrzyj do dokumentacji albo wrzuć coś, to wszyscy się pożywimy 🙂

W zasadzie kluczowe są dwie informacje:

- Czy masa "sygnałowa" i "zasilaniowa" mogą być bezkarnie zwierane?

- Czy z jakiegoś powodu konieczna jest izolacja wejść?

Link do komentarza
Share on other sites

Dzięki, uff, wreszcie zaczynam jarzyć. Ty nie robisz układu podłączanego do ISOBUS tylko chcesz skorzystać z gotowego czujnika wbudowanego w traktor, który dzięki temu że spełnia pewną specyfikację może być wprost podłączany do wejść standardowych urządzeń ISOBUSa. No i ta specyfikacja opisuje mechanikę złącza, zasilanie i sygnały dostępne na tym czujniku po to, by dobrze zaprojektować coś co będzie z tego interfejsu korzystać.

No to mamy:

1, 2, 3 - trzy piny impulsów różnych prędkości,
4 - sygnał dwustanowy z jakiegoś przełącznika,
5 - sygnał analogowy określający jakąś wysokość,
6 - zasilanie +12V

7 - GND.

Nie widzę tu dwóch mas, ale też interfejs jest zbyt prosty by mówić o jakichś optoizolacjach. Wyraźnie napisali, że zasilanie dostajesz wprost (w sensie bez żadnych konwersji napięć) z akumulatora ciągnika przez wyłącznik zapłonu i możesz z tego pociągnąć max. 5A i powinieneś mieć bezpiecznik 10A. Dobrze zrobiliśmy dając filtry na wejściach stabilizatora.

Oni z kolei gwarantują impedancję wyjściową <100R i wymagają, by obciążenie było >3k. Moim zdaniem dzielnik jaki zaproponowałeś będzie OK, masę układu podłączasz do masy złącza, jego zasilanie do +12V i tyle. Jedyne co, to zwróć uwagę by masa doprowadzona grubym kablem do Twojej płytki wchodziła w okolicę źródła tranzystora i dopiero stamtąd była dociągnięta już czymś cieńszym do procesora i reszty.

Czy mógłbyś wrzucić najnowszą wersję schematu, tę wg której zbudowałeś to cudo? To by ustaliło naszą wiedzę.

Konieczne jest zbadanie sygnału prędkości po obciążeniu dzielnikiem i weryfikacja oscyloskopem czy do pinu procesora dochodzą poprawne poziomy logiczne. Musisz dostać dobre, powtarzalne wyniki pomiarów na monitorze szeregowym - to warunek konieczny dalszego zajęcia się PWMem i silnikiem.

Link do komentarza
Share on other sites

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!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.