Tomasz Pyra
Guest
Mon Aug 06, 2007 10:10 pm
Na studiach bawiłem się troszkę budową układów opartych o
mikrokontrolery ATmega (dokładnie ATmega8), teraz chciałbym sobie co
nieco przypomnieć. Proszę więc o małe wsparcie :)
Chcę zbudować sobie taki trochę bardziej zaawansowany komputerek
samochodowy który będzie mierzył prędkość, obroty silnika, zużycie
paliwa, mierzył przeciążenia (jakieś akcelerometry mi się walają po
szufladach), szacował aktualną moc i sprawność silnika, mierzył
temperaturę, i co jeszcze mi po drodze przyjdzie do głowy.
Dotychczasowe układy wykonywałem w technice trawienia płytek, ze
ścieżkami rysowanymi pisaczkiem i układem w obudowie DIP (powinno
wystarczyć do takiego zastosowania), a najmocniejszy w DIP znalazłem
ATmega32. Chyba powinien mi wystarczyć.
Teraz kilka pytań:
Jak to zasilić? W samochodzie mam dostęp do 12V, jak najlepiej z tego
zrobić 5V, pamiętając że fajnie będzie jak wszystkie ADC nie będą mi
odbierać cewki zapłonowej i szumu alternatora.
I jeszcze mam pytanie dotyczące podłączania 2 urządzeń odbiorczych do
jednego czujnika.
Jeżeli chciałbym monitorować moim układem jakiś czujnik w silniku, to
jak podłączyć mój układ żeby nie zakłócić oryginalnego odczytu?
Rezystancja wejściowa ADC w ATmega to 100Mohm, jeżeli oryginalny układ
ma taki sam ADC, to podłączając oba do jednego czujnika zrobi mi się
niekontrolowany dzielnik napięcia i odczyt będzie nieprawidłowy. Dobrze
myślę? Jak tego uniknąć?
Wydaje mi się że w samochodzie nie powinno używać się odbiorników o tak
dużym oporze wewnętrznym. Znikome prądy płynące od czujnika byłyby
podatne na zakłócenia, więc może układy odbiorcze mają jakieś równolegle
wpięte rezystory tak żeby zmniejszyć opór wewnętrzny i można takie
100Mohm podłączyć bez ryzyka?
Czy te 32kB wystarczy? Chcę programować w C, kompilować pod GCC.
Pamiętam że kompilator generował niewielkie binarki, ale nie bardzo
czuję rozmiar programu który uda mi się tam wepchnąć. Ma ktoś pomysł na
obrazowe przedstawienie co daje się upchnąć w taką ilość pamięci przy
użyciu gcc?
Jak to się programowało? Pamiętam że korzystałem z interfejsu ISP, kabla
podłączonego do LPT komputera i oprogramowania które wszystkim
zarządzało softwareowo. I pamiętam że było to synonimem lipy i prowizorki.
Czy to nadal ma rację bytu (np. chodzi mi o dostęp na niskim poziomie do
LPT w nowych komputerach, pod Windowsem XP, ewentualnie Linuxem)?
Czy może lepiej zainwestować w programator? W czym będzie lepszy od
interfejsu ISP?
Dochodzi tu jeszcze taka rzecz, że urządzenie ma być w samochodzie
zamontowane stacjonarnie. Uaktualnienie oprogramowania polegać więc
będzie na wyciągnięciu uProcka i zaniesieniu go do domu.
Grzegorz Kurczyk
Guest
Mon Aug 06, 2007 11:52 pm
Użytkownik Tomasz Pyra napisał:
Witam
Quote:
Dotychczasowe układy wykonywałem w technice trawienia płytek, ze
ścieżkami rysowanymi pisaczkiem i układem w obudowie DIP (powinno
wystarczyć do takiego zastosowania), a najmocniejszy w DIP znalazłem
ATmega32. Chyba powinien mi wystarczyć.
W tych 32kB można upchnąć naprawdę sporo

Quote:
Teraz kilka pytań:
Jak to zasilić? W samochodzie mam dostęp do 12V, jak najlepiej z tego
zrobić 5V, pamiętając że fajnie będzie jak wszystkie ADC nie będą mi
odbierać cewki zapłonowej i szumu alternatora.
7805 plus ewentualny dławik na zasilaniu powinien wystarczyć. W
ostateczności wsadzić całość w puszkę ekranującą. Dużo będzie zależało
od prawidłowo zaprojektowanej płytki.
Quote:
I jeszcze mam pytanie dotyczące podłączania 2 urządzeń odbiorczych do
jednego czujnika.
Jeżeli chciałbym monitorować moim układem jakiś czujnik w silniku, to
jak podłączyć mój układ żeby nie zakłócić oryginalnego odczytu?
Rezystancja wejściowa ADC w ATmega to 100Mohm, jeżeli oryginalny układ
ma taki sam ADC, to podłączając oba do jednego czujnika zrobi mi się
niekontrolowany dzielnik napięcia i odczyt będzie nieprawidłowy. Dobrze
myślę? Jak tego uniknąć?
To będzie zależało od impedancji wyjściowej czujnika.
Jeśli będzie ona wynosiła np 1kom, to w pierwszym wypadku dotaniesz
dzielnik 1/1.000001
a po podłączeniu ATmegi będzie to dzielnik 1/1.000002 czyli różnicę
można sobie darować choćby ze względu na 10-bitową rozdzielczość
przetwornika ADC w ATmedze i niezbyt dokładne wewnętrzne źródło
referencyjne. Nie sądzę aby miało to również wpływ na oryginalny układ
współpracujący z takim czujnikiem. No chyba, że czujnik ma impedancję
1Moma... to wtedy może coś się podziać, ale nie sądzę aby w samochodzie
występowały takie czujniki.
Quote:
Wydaje mi się że w samochodzie nie powinno używać się odbiorników o tak
dużym oporze wewnętrznym. Znikome prądy płynące od czujnika byłyby
podatne na zakłócenia, więc może układy odbiorcze mają jakieś równolegle
wpięte rezystory tak żeby zmniejszyć opór wewnętrzny i można takie
100Mohm podłączyć bez ryzyka?
j.w.
Quote:
Czy te 32kB wystarczy? Chcę programować w C, kompilować pod GCC.
Pamiętam że kompilator generował niewielkie binarki, ale nie bardzo
czuję rozmiar programu który uda mi się tam wepchnąć. Ma ktoś pomysł na
obrazowe przedstawienie co daje się upchnąć w taką ilość pamięci przy
użyciu gcc?
Tak jak wspominałem można w tym scalaczku naprawdę sporo upchnąć.
Quote:
Jak to się programowało? Pamiętam że korzystałem z interfejsu ISP, kabla
podłączonego do LPT komputera i oprogramowania które wszystkim
zarządzało softwareowo. I pamiętam że było to synonimem lipy i prowizorki.
Czy to nadal ma rację bytu (np. chodzi mi o dostęp na niskim poziomie do
LPT w nowych komputerach, pod Windowsem XP, ewentualnie Linuxem)?
Czy może lepiej zainwestować w programator? W czym będzie lepszy od
interfejsu ISP?
ISP działa bez problemu pod WinXP (np avrdude z pakietu WinAVR).
Quote:
Dochodzi tu jeszcze taka rzecz, że urządzenie ma być w samochodzie
zamontowane stacjonarnie. Uaktualnienie oprogramowania polegać więc
będzie na wyciągnięciu uProcka i zaniesieniu go do domu.
Można wyprowadzić złącze ISP lub napisać bootloader komunikujący się ze
światem zewnętrznym za pośrednictwem dowolnego medium (kabelek RS232,
podczerwień, radiówka itd. itp.)
Pozdrawiam
Grzegorz
Tomasz Pyra
Guest
Tue Aug 07, 2007 8:27 am
Grzegorz Kurczyk pisze:
Quote:
Jak to zasilić? W samochodzie mam dostęp do 12V, jak najlepiej z tego
zrobić 5V, pamiętając że fajnie będzie jak wszystkie ADC nie będą mi
odbierać cewki zapłonowej i szumu alternatora.
7805 plus ewentualny dławik na zasilaniu powinien wystarczyć.
Jeszcze jedna rzecz - bo planuje układ podtrzymania zasilania na czas
rozruchu silnika w samochodzie (napięcie akumulatora wtedy mocno spada).
Chodzi o to żeby układ na podstawie spadku napięcia podczas rozruchu
oceniał kondycję akumulatora w samochodzie i po wyłączeniu zasilania
żeby układ zgrał nieulotne dane do EPROM-u.
Czy wystarczy wstawić elektrolityczny kondensator po stronie 5V tego
7805? Czy jeszcze jakoś dodatkowo muszę zabezpieczyć się przed ucieczką
prądu przez ten 7805 do instalacji samochodu?
Tak patrząc na specyfikację 7805 nie wydaje mi się żeby to było
konieczne, ale pewności nie mam.
Quote:
W
ostateczności wsadzić całość w puszkę ekranującą. Dużo będzie zależało
od prawidłowo zaprojektowanej płytki.
A co rozumiesz pod prawidłowym zaprojektowaniem płytki? Na co zwrócić uwagę?
Kiedyś budowałem układ pomiarowy w którym musiałem sobie radzić z
szumami (układ działał w bezpośrednim sąsiedztwie wielkich silników
elektrycznych), ale tam było odwrotnie - filtrowałem sygnał z analogowej
sondy, a zasilanie miałem z własnej baterii.
Quote:
Czy te 32kB wystarczy? Chcę programować w C, kompilować pod GCC.
Tak jak wspominałem można w tym scalaczku naprawdę sporo upchnąć.
No pamiętam że całkiem sporo upchnąłem w 8kb, ale pamiętam też, że
zaczęło mi w jakimś momencie tej pamięci brakować, a program jednak był
wtedy mniej skomplikowany.
Quote:
Uaktualnienie oprogramowania polegać więc
będzie na wyciągnięciu uProcka i zaniesieniu go do domu.
Można wyprowadzić złącze ISP lub napisać bootloader komunikujący się ze
światem zewnętrznym za pośrednictwem dowolnego medium (kabelek RS232,
podczerwień, radiówka itd. itp.)
No nad tym będę musiał pomyśleć.
Fajnie by było gdybym mógł przynosić do samochodu program wgrany do
telefonu komórkowego i robić upgrade firmware-u za pomocą IrDA bez
wyciągania czegokolwiek. Bo wyprowadzenie ISP mnie nie urządza -
samochód na parkingu, komputer w domu, a laptopa nie mam.
Są może gdzieś schematy gotowych rozwiązań zdalnego programowania?
--
PMS++ PJ S+ p+ M(+) W+>+++ P++:++ X(+) L++ B+ M+ Z++(+++) T- W- CB++
Piotrek Sz.
Guest
Tue Aug 07, 2007 8:42 am
Tomasz Pyra <hellfire@spam.spam.spam> napisał(a):
Quote:
...
No pamiętam że całkiem sporo upchnąłem w 8kb, ale pamiętam też, że
zaczęło mi w jakimś momencie tej pamięci brakować, a program jednak był
wtedy mniej skomplikowany.
Jest jeszcze w DIP-ie ATMega644 , a w tę można już naprawdę sporo upchać

Piotrek
--
Wysłano z serwisu Usenet w portalu Gazeta.pl ->
http://www.gazeta.pl/usenet/
Tomasz Pyra
Guest
Tue Aug 07, 2007 3:20 pm
Piotrek Sz. pisze:
Quote:
Tomasz Pyra <hellfire@spam.spam.spam> napisał(a):
...
No pamiętam że całkiem sporo upchnąłem w 8kb, ale pamiętam też, że
zaczęło mi w jakimś momencie tej pamięci brakować, a program jednak był
wtedy mniej skomplikowany.
Jest jeszcze w DIP-ie ATMega644 , a w tę można już naprawdę sporo upchać
Ooo... Super.
Przy tak niewielkiej różnicy w cenie i przy jednym egzemplarzu nie warto
się bawić w gorsze procki, a dodatkowa pamięć zawsze się może przydać.
Zwłaszcza z powodu, że nie mam nawet oscyloskopu i to urządzenie będzie
musiało też służyć do "rozgryzania" całego systemu, bo dokumentacja do
elektroniki samochodowej jest taka sobie, więc w fazie eksperymentalnej
będę tam nagrywał różnie niedocelowe programy do zbierania czystych danych.