Sari la conținut
ELFORUM - Forumul electronistilor

Proiect cu microcontrolere (DECODOR DIGITAL DCC)


XName

Postări Recomandate

Am decis ca e timpul sa trec la aplicatii practice. Acesta este primul meu proiect, iar pe cum voi avansa cu el voi scrie si pe forum. Poate printre voi vor fi unii interesati de el, sau doar pt a primii critici si idei, cum se spune "unde-s multi puterea creste, si butoiul se goleste".

 

Si acum despre schema: Decodorul digital se foloseste in modelismul feroviar, acesta montanduse in locomotivele miniatura. Rolul lui este sa receptioneze pachetele digitale venite prin sina, iar cele care ii sunt adresate sa le decodifice si sa ia actiuni conform lor.

 

Primul modul cel de conversie la 1 si 0 logic va avea rolul ca tensiunile care sunt negative sa le atribuie 1 logic si sa trimita spre RB7 iar tensiunile care sunt pozivite sa le trimita spre RB6. Tensiune normala este +12V/-12V insa conform stnadardeler trebuie sa accepte pe pe o plaja +7V/-7V...+22V/-22V. (aici astept idei, ms)

 

Rolul primului microcontroler este de a receptiona semnalel pe cei 2 pini de intrare si sa compare cu tabela de timpi pt 1 si 0 logic(colt jos stanga)

De exemplu 1 logic durata lui A si B trebuie sa fie 60-80 microsecunde pt 0 logic 90-1000 microsecunde.

Pachetele trimise pe sine sunte de forma:

1111111111111 0 AAAAAAAA 0 DDDDDDDD 0 EEEEEEEE 0, unde A pt adresa, D cuvant de date, iar E pt depistare erori.

Al doile microcontroler are rolul de a primii viteza pe cele 3 intrati, clock, data si verificare cuvant, sa transforme cuvantul de viteza in tensiune corespunzatoare pe care o aplica motorulu. Pt viteze mici de tractiune se vor trimite impulsuri spre motor. Cu ajutorul senzorului care nu m-am decis inca de tip va fi (inductiv, optic, mecanic) microcontrolul va putea sa regleze turatia motorului sa fie constanta in functie de sarcina care intervine pe parcurs.

 

Datorita timpilor ft mici in comnunicatie nu cred ca as fi reusit sa combin functiile celor 2 microcontrolere in unu singur.

 

Sper sa vi se para interesant si astept critici si sugestii.

http://www.fotohost.ro/getpic.php?src=xname/electronica/schita-decodor-digital-dcc.jpg[/url]

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

Top autori în acest subiect

  • XName

    5

  • Elef

    3

  • vsurducan

    1

  • d2134

    1

Top autori în acest subiect

Am decis ca e timpul sa trec la aplicatii practice. Acesta este primul meu proiect, iar pe cum voi avansa cu el voi scrie si pe forum. Poate printre voi vor fi unii interesati de el, sau doar pt a primii critici si idei, cum se spune "unde-s multi puterea creste, si butoiul se goleste".

 

Si acum despre schema: Decodorul digital se foloseste in modelismul feroviar, acesta montanduse in locomotivele miniatura. Rolul lui este sa receptioneze pachetele digitale venite prin sina, iar cele care ii sunt adresate sa le decodifice si sa ia actiuni conform lor.

 

Primul modul cel de conversie la 1 si 0 logic va avea rolul ca tensiunile care sunt negative sa le atribuie 1 logic si sa trimita spre RB7 iar tensiunile care sunt pozivite sa le trimita spre RB6. Tensiune normala este +12V/-12V insa conform stnadardeler trebuie sa accepte pe pe o plaja +7V/-7V...+22V/-22V. (aici astept idei, ms)

 

Nivelele se aseamana foarte mult cu RS232 cu exceptia ca se suprapune o tensiune continua (adica alimentarea) (standardul RS232 accepta la receptie semnale in plaja +/-3V la +/-15V iar standardul extins +/-3V la +/-25V) Din cate am vazut eu separarea alimentare-semnale se face cu o punte si analiza timingurilor prin conectarea semnalelor direct in PIC prin rezistente, diodele de limitare interne IO-urilor compatibilizeaza nivelele. Eu as incerca un receptor MC1489 sau similar, sta foarte bine cu ESD-ul:

http://www.datasheetcatalog.net/datashe ... 1489.shtml

 

 

 

 

Rolul primului microcontroler este de a receptiona semnalel pe cei 2 pini de intrare si sa compare cu tabela de timpi pt 1 si 0 logic(colt jos stanga)

De exemplu 1 logic durata lui A si B trebuie sa fie 60-80 microsecunde pt 0 logic 90-1000 microsecunde.

Pachetele trimise pe sine sunte de forma:

1111111111111 0 AAAAAAAA 0 DDDDDDDD 0 EEEEEEEE 0, unde A pt adresa, D cuvant de date, iar E pt depistare erori.

Al doile microcontroler are rolul de a primii viteza pe cele 3 intrati, clock, data si verificare cuvant, sa transforme cuvantul de viteza in tensiune corespunzatoare pe care o aplica motorulu. Pt viteze mici de tractiune se vor trimite impulsuri spre motor. Cu ajutorul senzorului care nu m-am decis inca de tip va fi (inductiv, optic, mecanic) microcontrolul va putea sa regleze turatia motorului sa fie constanta in functie de sarcina care intervine pe parcurs.

 

Datorita timpilor ft mici in comnunicatie nu cred ca as fi reusit sa combin functiile celor 2 microcontrolere in unu singur.

 

PIC16F84 este foarte scump si cam obsolete.

 

Sper sa vi se para interesant si astept critici si sugestii.

http://www.fotohost.ro/getpic.php?src=xname/electronica/schita-decodor-digital-dcc.jpg[/url]

Link spre comentariu

Am studiat niste scheme de decodoare de pe net si la toate am observat ca semnalul provenit de la sine este trecut prin rezistente de 33K direct spre pini de intrare ai PICului. Oare este destul de bine asa pe direct, da ca as prefera varianta asta, deoarece decodorul trebuie sa aibe dimensiuni cat mai mici.Legat de MPLAB am vazut ca se poate simula si watchdogul, dar nu da reset si se continua mai departe :-??Bine spus "ESD"ul. Trebuie sa iau in calcul si acesta parte, deoarece lungimea sinelor pe o macheta poate sa fie destul de mare si pot aparea si descarcari pe ele , mai ales in situatia in care totul este in repaus

Link spre comentariu

Cine stie cum se poate controla viteza unui motor de curent continuu (12V) in regim de impulsuri, mai precis care ar fi timpii impulsurilor?

Link spre comentariu

Bine spus "ESD"ul. Trebuie sa iau in calcul si acesta parte, deoarece lungimea sinelor pe o macheta poate sa fie destul de mare si pot aparea si descarcari pe ele , mai ales in situatia in care totul este in repaus

Ca sa nu ai probleme cu ESD pui sinele la impamintare prin rezistente de cca 20 kohm (ambele).

Cine stie cum se poate controla viteza unui motor de curent continuu (12V) in regim de impulsuri, mai precis care ar fi timpii impulsurilor?

Impulsurile au frecventa de citeva sute de Hz si sunt cu factor de umplere variabil (poti folosi un modul CCP). In poza pe care ai pus-o exista un senzor de turatie deci controlul este in bucla inchisa; eu as face un regulator fuzzy, maidegraba decit unul PID.
Link spre comentariu

... sunt cu factor de umplere variabil (poti folosi un modul CCP). In poza pe care ai pus-o exista un senzor de turatie deci controlul este in bucla inchisa; eu as face un regulator fuzzy, maidegraba decit unul PID.

d2134 poti detalia putin daca te rog

 

Pana acuma am reusit sa simplific schema (de ce vreau asta, decodorul trebuie sa fie ft mic, o locomotiva avand 11cm/ 2cm, bineneteles fara rabat de calitate :d). Modulul de conversie la 1 si 0 logic sunt doar 2 rezistente simple de 33K. Studiind niste asm-uri pt aplicatie de acelasi gen, am ajuns sa combin cele 2 PICuri intrunul singur, ce nu pot inca sa includ sa faca unu singur este doar partea cu senzorul de turatie, adica detectia de sarcina si mentinerea vitezei constante, dar mai studiez :)

Link spre comentariu

Pentru ce scara faci decodoarele?Fiindca am senzatia ca o mare problema va fi amplasarea senzorului de turatie.Iti ajunge un singur PIC ca sa faci si compensarea de sarcina.Dar trebuie sa fie ceva mai tzapan :) un 16f873 de exemplu.

Link spre comentariu

Scara pe care am ales-o este N, adica aprox 1:160.Pentru inceput o sa incerc sa fac cat mai simplu codul sa faca doar receptia de adresa de pe sina si cele 5 functii, iar pt motor doar on offapoi codul se va complica.Nu sunt sigur dar nu se poate ca senzorul de turatie sa fie eliminat, sau daca motorul este alimentat in regim de impulsuri, in momentele in care nu este pe hi sa folosesc cumva autoinductia din el :) astfel afland si viteza lui???

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