Sari la conținut
ELFORUM - Forumul electronistilor

Adaptor satelit volan comenzi audio


louis

Postări Recomandate

Eu am facut cu un Atmega8 treaba asta.

Am pus matricea (matricea din care e facut satelitul de la Renault) pe niste porturi ale AVR-ului si am iesit pe alte porturi cu niste optocuploare (in felul asta si protejez COMPLET interfata) .

Dupa fiecare optocuplor am inseriat cate o rezistenta. In functie de ce port imi deschide, imi lasa sa intre rezistenta x sau y pe HU Sony (merge si la Pioneer insa difera valorile la rezistente). Teoretic la 9 comenzi - avem 9 optocuploare la iesire - deci 9 porturi de iesire utilizate (insa din pacate folosesc doar 7).

 

Este mai mult de explicat insa daca vrei pot sa-ti arat schema si cam ce am facut.

 

UNICA chestie ce nu am putut face este rotita (TRACK + / -) de la satelitul Renault - care in principiu este un rotary encoder, ina lucreaza foarte CIUDAT: pe 3 biti. Pare sa fie un 3-bit Gray code. Acuma la 3bit Gray Code, avem urmatoarele valori:

 

0 0 0

0 0 1

0 1 1

0 1 0

1 1 0

1 1 1

1 0 1

1 0 0

 

Rotita de pe satelitul Renault lucreaza doar cu 3 valori din intreaga serie:

 

1 0 0

0 1 0

0 0 1

 

Acuma mai este ceva. Sistemul NU este batut in cuie pe HU pe care se pune - adica daca pun pe alt tip de HU, sau daca vreau sa schimb functia de pe butonul X pur si simplu schimb rezistenta din iesirea optocuplorului si gata (pun rezistenta EXACT la valoarea oficiala - nimic mai putin / nimic mai mult). AVR-ul nu stie decat sa citeasca matricea (sa o scaneze tot timpul) si sa deschida portul corespondent butonului apasat (buton din matricea definita in AVR). Faza tare este ca nu apar erori din cauza variatilor de temperatura samd....TOTUL functioneaza PERFECT (mai putin rotita). Sincer deja mi sa cam luat cu rotita...cu toate ca daca imi vine vreo idee m-as apuca sa o implementez (doar asa la ambitie).

 

Pentru mai multe barfe, [email protected]

Link spre comentariu
  • Răspunsuri 65
  • Creat
  • Ultimul Răspuns

Top autori în acest subiect

  • louis

    37

  • bubulica

    19

  • fratello

    5

  • Liviu M

    2

Top autori în acest subiect

Imagini postate

pun imaginea schemei iar pe undeva sa n-o mai poata sterge baietii astia rai de pe forum.

 

schema e aici. din pacate restul de poze de pe parcursul proiectului nu le mai am. multumiri celor ce le-au sters. puteau anunta, bai salvati-va munca, noi v-o stergem.

 

misto cu optocuplerele alea ca ai separatie galvanica. adica nu-ti bagi "corent" din sony in microcontrolleru tau. pe de alta parte, cred ca piesele sunt cam scumpe.

 

legat de rotita satelitului renault, nu stiu daca e binar. eu tin minte ca pur si simplu cand roteai in sus rotita baga o rezistenta iar cand roteai in jos alta. tot contacte metalice cu resistente de emulat.

Link spre comentariu

Scumpe ? Uita-te putin la schema sa intelegi....Inafara de Atmega (care costa 10 - 15 lei) ce mai costa? Optocuploarele ? :)) sunt o gluma (1 leu bucata)...si rezistentele ...(cat or mai fi si alea..)Hai sa zicem ca ajungi la 25 lei toata investitia - ti se pare MULT ? fata de pretul unui adaptor de cumparat ?PS in schema am pus 8 iesiri - de fapt eram in gandiri, cu acel rotary encoder. In realitate sunt doar 6 folosite (am mai pus si celelalte 2 optocuploare doar in caz ca reusesc sa fac ceva cu encoderul).Dupa cum vezi porturi pentru intrare mai sunt destule - asa ca nu imi fac nici o grija, Atmega este un mcu fiabil si foarte rezistent (testat in cele mai criminale conditii). Exact cum ai spus - pe langa avantajul NET al folosirii rezistorilor la valoarea ideala (ramane loc de marja a rezistentei), mai am si avantajul separarii galvanice datorita optocuploarelor.

post-3751-139829290877_thumb.jpg

Link spre comentariu

stiu ca ma interesasem si eu de niste octocuploare din alea la un moment dat pentru o chestie si vazusem la 10-15lei. bine,voiam ceva de curenti mari, 1-2A la 12V, poate ca din cauza asta erau asa scumpe. pana la urma am luat relee la 5lei/bucata

Link spre comentariu

De ce ai nevoie de optocuploare la curenti mari ? Ca ele de fapt sunt puse la masa... vezi schema. Pentru ce e acolo, LTV 817B este ARHISUFICIENT.PS pt hex....puneti osu la munca si capul la contributie. :101

Link spre comentariu

De ce ai nevoie de optocuploare la curenti mari ? Ca ele de fapt sunt puse la masa... vezi schema.

erau pentru alt proiect, controlam niste electrovalve.ma gandisem la octocuploare ca sa fie silentioasa treaba. dar oricum faceau valvele tzacaneala asa ca am luat relee :Pcum e cu rotita satelitului? vezi mai sus ca am scris ceva de ea.
Link spre comentariu

Nu prea am vazut unde ai scris de rotita, de fapt din cate imi dau seama, faci referire la niste porturi ale PIC-ului....(cum nu mai sunt scheme samd..nu se intelege absolut nimic).In orice caz prefer sa folosesc Atmega de 1000 de ori in locul la un PIC - si atmega indiferent cum l-ai programa - chiar si daca ii setezi fuse bitii aiurea, tot se poate scoate la capat si se rezolva (asta daca ai scule) :freaza:

Link spre comentariu

aici spusesem.

legat de rotita satelitului renault, nu stiu daca e binar. eu tin minte ca pur si simplu cand roteai in sus rotita baga o rezistenta iar cand roteai in jos alta. tot contacte metalice cu resistente de emulat.

deci de unde si pana unde ai descoperit tu ca e binar si alte chestii complicate.
Link spre comentariu

Ce vb...inseamna ca nu ai vazut cum functioneaza sistemul. Este chiar unul binar 100%, nu stiu de unde ai vazut tu rezistenta acolo...in fine...Uita-te si o sa vezi. Daca de curiozitate ai desfacut un satelit cred ca observai asta. Deseara am sa-ti fac niste poze de calitate sa intelegi cum e sistemul...Pe rotita este o singura tabla comuna, cu 4 lamele. Rorita este fortata sa se miste fractionat datorita unui sistem opritor.La o pozitie X lamelele 2 lamele unesc 2 pad-uri (unul din paduri comun). La pozitia Y lamela aia uneste alte 2 paduri (padul comun amintit mai in fata si un al 2-lea pad). La pozitia Z alte 2 (pad-ul comul + al 3-lea pad). Acuma rotita mai are inca 9 fractiuni pentru o rotatie completa la 360 grade. La pozitia a 4-a incepe iarasi pozitia X samd pana la fractiunea a 12-a.De fapt la o revolutie completa rotita face de cate 4 ori contacte la cele 3 paduri. Acuma in sens invers se vor atinge - logic in sens invers.Deci asteapta sa iti arat deseara ce si cum si o sa te convingi de cum merge jucaria. Nu are urma de rezistenta in ea...

Link spre comentariu

ups, stai ca am uitat ca la renault nu e cu rezistente in saltelit :rade: la renault e cu matricea de fire. :nebunrau:pai si tu zici ca atunci cand rotesti inr-un sens sau altul, face altceva decat inchide 2 fire din alea? pune ohm-metru pe ele si vezi care sunt unite cand dai in sus si in jos. mai mult nu-ti trebuie.

Link spre comentariu

Hello...ce am zis eu pana acuma ? :rade: Avem matricea da?Avem 3 coloane sa zicem X Y si Z si A B C liniile. Nu ne intereseaza liniile B si C. (B si C in combinatie cu X Y si Z ne dau butoanele)La rotita la fiecare step se uneste A + X apoi la urmatorul step A + Y si in final la al 3-lea step A +Z. Apoi continua pana la step-ul 12 - cand roata a facut o revolutie completa.Deci este un rotary encoder pe 3 biti. Avem odata 1 0 0 apoi 0 1 0, si in final 0 0 1.

Link spre comentariu

bun, si atunci cum determini daca sensul e inainte si inapoi?practic daca esti in pozitia 010 si faci inainte ajungi in 001 iar daca faci inapoi ajungi in 100. dar la prima invartire nu ai la ce sa te raportezi ca nu stii pozitia rotitei. practic ori o faci pe prima in gol, o stochezi in soft si la a 2-a te raportezi ori e altul spilul si asa trebuie sa fie. deci trebuie sa fie o metoda prin care sa afli pozitia rotitei. daca esti pe coloana x, y sau z.hai ca te ajut s-o rezolvi cu rotitza.mai descrie-mi odata cum functioneaza. deci, in orice moment al rotirii ai unul din cele 3 variante de fire conectat? ca altfel nu merge. sau numai in momentul cand cand face zvâc rotita intre 2 pozitii fixe se conecteaza linia A cu unul din X Y Z si dupa aia ai iar 000 in pozitia fixa?eu zic ca in orice moment de rapaus al rotitei ar trebui sa ai curent pe unul din cele 3 variante. asa incat atunci cand rotesti inca o data la urmatoarea pozitie, sa ai curent in urmatorul nod si sa poti sa si stii in soft de unde ai plecat. ia zi, asa e?

Link spre comentariu

am gasit si o poza cu montajul pe breadboard.

 

cu potentiometrul mimam rezistentele din satelitul masinii, pentru testare in soft. de aici si erroarea vara, pentru ca R-urile se modifica, intervalele de comparatie setate de mine in soft fiind probabil prea mici.

 

Posted Image

Link spre comentariu

Interesant subiect ! M-am chinuit si eu mult cu o comanda pe volan, pentru un Blaupunkt care accepta doar semnale codificate RC10.Atasez schema satelitului de Clio/Logan, poate va este de folos...

post-11296-139829290944_thumb.jpg

Link spre comentariu

pai m-am lamurit oarecum.

 

deci pentru rotita avem nevoie de 3 pini in microcontroller. punem maro-ul satelitului la 5v cc si in fiecare moment trebuie sa avem potential pe unul din cele 3 (galben verde albastru). daca e verde vom avea o matrice spre exemplu. (0 1 0)..am pastrat ordinea culorilor din poza lui fratello. daca rotim spre minus matricea trece in (0 0 1) cu tensiune pe albastru, si daca rotim spre plus matricea trece in (1 0 0) cu tensiune pe galben. practic in cod avem 3 variante de verificat, plecand de la pinul cu voltaj si detectam noul pin cu voltaj, daca este + sau - pe rotita.

 

deci din 3 pini putem afla sensul rotirii si deci putem completa restul functiilor lipsa bubulica :aplauze

 

m-am mai gandit putin unde ar mai putea aparea o problema. faptul ca alimentezi firul maro sa iti dea voltaje pe coloane and faci verificarile pentru celelalte butoane.

 

uite cum as face eu.

-cele 3 linii (negru maro rosu) le-as lega la 3 pini;

-celelalte 3 coloane (verde albastru galben) iar la 3 pini;

 

iar in soft pe un timer scurt, sa zicem 20us as rula o bucata de cod care sa faca verificari dupa cum urmeaza:

 

0. initial toti pinii liniilor sunt pusi pe 0v, low;

1.dau curent pe negru spre exemplu. pinul e tinut initial la 0v iar apoi in fac high deci se tensioneaza firul negru la 5v.

2.verific daca am tensiune pe verde galben sau albastru; asta obtin 3 functii dintr-un foc.

3. fac negru la loc 0v; adica pinul la loc pe low; sa nu ma pacaleasac la celelalte determinari

4. iau lnia rosie la voltaj adica fac pinul high din 0v; verific coloanele si pac mai am 3 functii;

5. fac rosu 0v;

6. verific rotita: trec maro pe 5v; am o variabila globala in care tin minte care a fost ultimul pin;

-daca variabila nu a fost initializata (e spre ex. 0, la pornirea circuitului), salvez in ea pinul care are acum curent. if (!globalV) globalV = pin_curent; si pui 1-verde, 2-albastru, 3-galben;

-else trebuie sa determin sensul rotirii, doar daca pinul curent nu e acelasi cu cel global salvat la rularea anterioara pe timer. la final salvez in variablia globala pinul curent. si aici ai 3 variante pornind de la matricea pinului precedent; daca ai (1,0,0) si curent e (0,0,1) s-a rotit intr-un sens, sau daca ai (0,1,0) s-a rotit in alt sens; altfel eroare sau a sarit peste un contact imperfect.

 

cam asta e codul de determinare a functiilor satelitului de clio/logan.

Link spre comentariu

Creează un cont sau autentifică-te pentru a adăuga comentariu

Trebuie să fi un membru pentru a putea lăsa un comentariu.

Creează un cont

Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!

Înregistrează un nou cont

Autentificare

Ai deja un cont? Autentifică-te aici.

Autentifică-te acum



×
×
  • Creează nouă...

Informații Importante

Am plasat cookie-uri pe dispozitivul tău pentru a îmbunătății navigarea pe acest site. Poți modifica setările cookie, altfel considerăm că ești de acord să continui.Termeni de Utilizare si Ghidări