Jump to content
ELFORUM - Forumul Electronistilor
Sign in to follow this  
XName

Proiect cu microcontrolere (DECODOR DIGITAL DCC)

Recommended Posts

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]

Share this post


Link to post
Share on other sites

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]

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

... 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 :)

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

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???

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.