Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 18 kwi 2024, o 19:18


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 12 ] 
Autor Wiadomość
PostNapisane: 21 cze 2018, o 08:43 
Offline
Nowy

Dołączył(a): 13 mar 2018
Posty: 7
Pomógł: 0

Witajcie,

W związku z tym, że mój brat prowadzi gospodarstwo rolne, a moja dusza inżyniera sprawia, że staram się "ulepszać dobre" zrodziła się koncepcja na elektryczne sterowanie wydajnością siewnika.
Jako, że z wykształcenia jestem mechanikiem, nie elektronikiem pewne kwestie spędzają mi sen z powiek. Schemat mojego projektu wygląda następująco:

Obrazek

Stabilizator U2 zastosowano w celu dostosowania napięcia zasilania dla mikrokontrolera.
Stabilizator U3 zastosowano w celu dopasowania sygnału wejściowego do logiki mikrokontrolera (Sygnał wejściowy: Stan wysoki powyżej 6,3 V, Sygnał niski poniżej 1,3 V. Częstotliwość max: 1 kHz, sygnał "prostokątny")
Silnik elektryczny M1 12V DC 3000 obr/min o mocy maksymalnej 220W z przekładnią ślimakową i=60.
MOSFET - BUZ11
Masa wspólna.

Pytania do sprzętu:
Niewykorzystane piny powinny być podpięte do VCC czy GND ??
Czy rezystor R1 powinien być podciągnięty do VCC5V czy GND ? Czy wartość 1k ohm wystarczy ?

2. Pisząc program chciałem bazować na zmodyfikowanej wersji przykładu prędkościomierza z www.mikrokontolery.blogspot.pl.
Moje umiejętności programistyczne okazały się jednak niewystarczające, żeby odczytać prędkość obrotową nawet na porcie szeregowym :(

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Sygnał wejściowy określa prędkość pojazdu (130 Hz/m/s). Chciałbym, aby dla wartości około 4 m/s (520 Hz) PWM dla silnika był 100%, natomiast dla 0,5 m/s (ok 65Hz) 10%.
Chcę, aby odczyt i zmiana PWM realizowana był najlepiej co 13 Hz. Wiem, że program tej części jeszcze nie uwzględnia. Pokonało mnie samo wyświetlanie wartości prędkości na porcie szeregowym :(

Z góry dziękuję za pomoc i dyskusję w temacie.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 cze 2018, o 10:07 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 mar 2014
Posty: 1475
Pomógł: 167

rafisoltys napisał(a):
Stabilizator U3 zastosowano w celu dopasowania sygnału wejściowego do logiki mikrokontrolera (Sygnał wejściowy: Stan wysoki powyżej 6,3 V, Sygnał niski poniżej 1,3 V. Częstotliwość max: 1 kHz, sygnał "prostokątny")
Nie tak Panie Kolego, nie tak ;)
Zajrzyj jak to się robi na blog Mirka http://mirekk36.blogspot.com/2015/05/ko ... v-ttl.html

--
Pozdrawiam,
Robert

------------------------ [ Dodano po: 2 minutach ]

rafisoltys napisał(a):
Niewykorzystane piny powinny być podpięte do VCC czy GND ??
Niewykorzystanych pinów nie podpinasz bezpośrednio ani do VCC ani do GND (jak bardzo chcesz to stosuje się pull-up).



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 cze 2018, o 10:30 
Offline
Użytkownik

Dołączył(a): 22 gru 2013
Posty: 296
Lokalizacja: Szczecin
Pomógł: 47

Jeszcze dużo nauki przed Kolegą.
"Program" to na razie jakaś bezładna mieszanka kodu w C oraz wstawek z Arduino.
Proponuję najpierw nauczyć się "mrugać" diodą LED (zamiast tranzystora BUZ), potem opanować PWM ( sterowanie jasnością tego LED=odpowiednik zmiany szybkości silniczka), potem opanować pomiar częstotliwości. Wtedy można połączyć to wszystko w jedną całość ( a przy okazji już trochę wiedzieć o uC i o programowaniu w C).

ps.
Pin 1 w tiny2313 jest Reset-em , nawet jeżeli ten układ z 7805 zadziała to efektem będzie co chwilę reset uC.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 cze 2018, o 10:53 
Offline
Nowy

Dołączył(a): 13 mar 2018
Posty: 7
Pomógł: 0

Autorem programu nie jestem. W prawdzie z oryginału zamieniłem tylko wyświetlanie wyniku z LCD na port szeregowy.
Migać diodą potrafię.
Nie potrafię korzystać z liczników i timerów i przerwań.Tzn nie potrafię napisać kodu, który zmierzy mi czas pomiędzy pierwszym zboczem rosnącym, a na przykład 13 zboczem rosnącym (Rozumiem, że licznik miałby zliczać do 13 i następnie wyzwalać przerwanie ????). Najlepiej byłoby gdyby, udało się z dużą powtarzalnością i dokładnością obliczyć czas pomiędzy następującymi po sobie zboczami.

Uważam, że aby zjeść chleb nie trzeba od razu zostawać piekarzem, stąd mój post.

Wiem, już np. ze stabilizator do tego rozwiązania się nie na da i muszę zastosować konwerter poziomów logicznych. I to jest wiedza, którą zdobyłem tutaj za którą dziękuję i proszę o jeszcze :)

rskup napisał(a):
Niewykorzystanych pinów nie podpinasz bezpośrednio ani do VCC ani do GND (jak bardzo chcesz to stosuje się pull-up).

Dzięki.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 cze 2018, o 11:24 
Offline
Użytkownik

Dołączył(a): 22 gru 2013
Posty: 296
Lokalizacja: Szczecin
Pomógł: 47

Ale żeby w domu upiec np. ciasto trzeba mieć przepis i trochę wiedzy i umiejętności.
Kolega łączy program w "czystym" C z fragmentami programu z Arduino, całość nie ma prawa nawet się skompilować ( o czym nie ma w poście ani słowa) a co dopiero działać.
Dlatego proponuję podłączyć LED zamiast silnika ( dla bezpieczeństwa eksperymentatora); po opanowaniu PWM ( dopiero podłączać silnik).



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 cze 2018, o 11:34 
Offline
Nowy

Dołączył(a): 13 mar 2018
Posty: 7
Pomógł: 0

krish napisał(a):
Ale żeby w domu upiec np. ciasto trzeba mieć przepis i trochę wiedzy i umiejętności.
Kolega łączy program w "czystym" C z fragmentami programu z Arduino, całość nie ma prawa nawet się skompilować ( o czym nie ma w poście ani słowa) a co dopiero działać.
Dlatego proponuję podłączyć LED zamiast silnika ( dla bezpieczeństwa eksperymentatora); po opanowaniu PWM ( dopiero podłączać silnik).


Program w obecnej postaci ma jedynie odczytywać prędkość obrotową i wysyłać do portu szeregowego, czego niestety nie robi :(. Gdy będę miał wartość prędkości obrotowej zapisaną do zmiennej to z PWM sobie już poradzę.
Program się kompiluje bez błędów.

Czy stabilizator na linii sygnałowej można zastąpić zwykłym dzielnikiem napięcia ??
Na różnych forach proponują też transoptor.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 cze 2018, o 12:36 
Offline
Użytkownik

Dołączył(a): 22 gru 2013
Posty: 296
Lokalizacja: Szczecin
Pomógł: 47

Kompiluje się? Chyba nie ten co zamieściłeś ( wklej komunikaty z kompilacji).



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 cze 2018, o 13:35 
Offline
Nowy

Dołączył(a): 13 mar 2018
Posty: 7
Pomógł: 0

krish napisał(a):
Kompiluje się? Chyba nie ten co zamieściłeś ( wklej komunikaty z kompilacji).


Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 cze 2018, o 14:10 
Offline
Użytkownik

Dołączył(a): 22 gru 2013
Posty: 296
Lokalizacja: Szczecin
Pomógł: 47

1. Nie wspomniałeś, że używasz kompilacji w Arduino IDE.
2. Program nie jest zgodny nomenklaturą z Arduino ( setup(), loop(), jest setup(), main()=pomieszane C z Arduino )
3. To nie jest całość komunikatów: u mnie jest błąd w linii: Serial.println('Pomiar predkosci');
3. Jaką płytkę wybrałeś do kompilacji (Narzędzia/Płytka:...)?
4. czy Twoje Arduino wspiera Tiny2313?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 cze 2018, o 14:48 
Offline
Nowy

Dołączył(a): 13 mar 2018
Posty: 7
Pomógł: 0

Skopiowałem wszystkie komunikaty. Program przeportowany był na ATTIny13A (przynajmniej jeśli chodzi o ustawienia TIMERA i LICZNIKA).
Krish tak jak wspomniałem, ja tego programu nie napisałem można wręcz powiedzieć, że próbuję go odpalić na swoim ATTiny i wyrzucić wynik prędkości do wyjścia szeregowego. Program mi nie działa. Staram się go zmusić do współpracy.

Dziękuję, Ci za aktywność w tym wątku, ale problem dalej istnieje i ani trochę nie zbliżyłem się do jego rozwiązania.

Zastanawiam się nad pójściem w arduinowe pulseIn() i mills() ? Może podsuniesz jakąś koncepcje jak ugryźć ten program ? Na tym etapie nie chcę uczyć się pisania programu od nowa, chciałbym już istniejący dostosować do swoich potrzeb. Na własne programy przyjdzie czas. I na pewno z rady dotyczącej zaczęcia od zmiany jasności diody skorzystam.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 cze 2018, o 15:20 
Offline
Użytkownik

Dołączył(a): 22 gru 2013
Posty: 296
Lokalizacja: Szczecin
Pomógł: 47

-sorry ale poprzednio zasugerowałem się ,że to ma być tiny2313 a nie tiny13 ( wejście reset pozostaje-aktualne).
-Arduino nie znam (zbyt dokładnie).
-Włącz: Plik/preferencje/pokaż szczegółowe... -oba ptaszki; pokaże się cały przebieg kompilacji z błędami i warningami
-Program na pewno nie jest właściwie przeportowany na tiny13 (np. Tiny13 nie ma rejestru TIMSK1)
-Nie wszystkie peryferia Tiny działają tak samo jak w Mega.
-Arduino używa jakichś timerów i przerwań, które mogą kolidować z Twoimi.
-dlaczego Tiny? nie lepiej jakieś nano lub micro ( 10-20PLN-cała płytka) itp. z Mega328P-nowszy, lepszy, więcej zasobów i dużo oprogramowania bez przeróbek. Wspierany przez arduino bez kombinacji.
- i ostatnie, gdzie to biedne Tiny13 ma wyjście "serial"? (w "dużych" avr-ach "Tx").



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 cze 2018, o 15:48 
Offline
Nowy

Dołączył(a): 13 mar 2018
Posty: 7
Pomógł: 0

Udało mi się w końcu trafić na stronę, gdzie znalazłem potrzebne mi informację i kod.

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Komunikacja z Serial jest. Wyświetla mi nawet wartość zmiennej rpm.
Problem jest tylko taki, że wartość ta jest w granicach 560-580 bez podłączenia czujnika (w wersji testowej chciałbym symulować czujnik przyciskiem).
Czy zwykły filtr RC powinien to wytłumić ?

------------------------ [ Dodano po: 14 minutach ]

Wynik zmiennej rpm jest zdecydowanie losowy, raz wskazuje 0, raz 300, raz 1000. Nie zależnie czy podłączony jest jakikolwiek przewód do PIN4

------------------------ [ Dodano po: 15 minutach ]

Wciśnięcie przycisku powoduje, że zmienna rpm przyjmuje wartość 0.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 12 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 0 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO