Modelism - RHC Forum: Microcontrolere - Modelism - RHC Forum

Salt la continut

Pagina 1 din 1

Microcontrolere Are cineva experienta de lucru cu ele ?

#1 Useril este offline   moshulik 

  • Incepator
  • PipPip
  • Grup: Members
  • Postari: 33
  • Inregistrat: 23-November 05

Postat 15 December 2005 - 01:43 PM

Salutare.
Din cate am citit pana acum, se pare ca microcontrolerele joaca un rol destul de important in modelism, cu aplicabilitate de la module de radiocomanda - la controlere de motoare brushless, eventual sistem de "pilot automat" - stabilizare automata, coordonarea controalelor unui model etc...

Din tot ce am cautat pe net pana acum, am gasit intr-un singur loc o solutie "de la un cap la altul" si destul de ieftina pentru lucrul cu microcontrolere.

http://home.wanadoo..../programmer.htm - pare a fi "starting kit" pentru lucrul cu at90s1200, din familia atmel. Are o schema de programator foarte simpla (doar rezistente si condensatori legati la mufa portului paralel), link-uri care un asamblor (compilator) compatibil si catre un driver de descarcare a codului obiect (fisier .hex) in memoria microcontrolerului. Pe mine m-a costat 200.000 de lei microcontrolerul (de la www.conexelectronic.ro) impreuna cu mufa de port paralel si restul de piese, maruntisuri.

Pe site-ul www.atmel.com sunt date fisele tehnice ale tuturor microcontrolerelor, exista si AVR Studio, free tool, care contine documentatie (help) buna pentru limbajul assembler.

In cateva zile sper sa termin de lipit schema programatorului si sa realizez si o schema simpla de aplicatie a microcontrolerului programat (ceva de genul "Hello world", cu leduri).

asta e radacina link-ului de fapt - http://home.wanadoo.nl/electro1/avr/
aici este o scurta introducere in limbajul asm - http://home.wanadoo....vr/assembly.htm


Stiu ca net-ul este plin de informatii despre microcontrolere atmel, insa pe site-ul asta am gasit prezentarea optima, minimala (pentru mine unu, prea multa informatie strica), sunt prezentate lucrurile in genul "www.howstuffworks.com". Mai greu este de facut pasul de la soft la hard, dar o data realizat un proiect de genul - aprinde ledul, stinge ledul, restul se incadreaza in expresia "it's only software".

Aceasta postare a fost editata de moshulik: 15 December 2005 - 02:00 PM

0

#2 Useril este offline   ctotth 

  • Membru de onoare
  • PipPipPipPipPipPip
  • Grup: Members
  • Postari: 985
  • Inregistrat: 22-April 04

Postat 15 December 2005 - 02:12 PM

Salut si eu sunt incepator in ale microcontrolerelor. Tot cu Atmel am inceput.

Vezi ca pe pagina care ai dat-o e si un warning in dreptunghi rosu in stanga sus; sunt scheme de programator aproape la fel de simple cu un singur integrat buffer o dioda si o rezistenta. Eu am facut-o pe asta http://www.lancos.co...risp-stk200.gif, merge fara probleme.
Are niste avantaje (protejeaza portul paralele si altele) care le poti afla sapand in forumul de mai jos:

Pe forumul electronistilor poti afla mai multe informatii http://www.hi-end.ro/discutii/ (sunt sub-forumuri pt. Microcontrolere, Atmel si PIC)
Dar cel mai complet forum este http://www.avrfreaks.net/
Exista si o lista de discutii la yahoo http://groups.yahoo....group/AVR-Chat/

Ca limbaj poti folosi si GnuC - AVR-GCC care merge pe Linux si Windows si am inteles ca poate fi integrat in AVR Studio.
Exista si un mediu BASIC bunicel - bascom-avr. E o versiune demo care limiteaza marimea programului dar ca la orice soft se mai afla si crack-uri.

cezar

Aceasta postare a fost editata de ctotth: 15 December 2005 - 02:17 PM

0

#3 Useril este offline   moshulik 

  • Incepator
  • PipPip
  • Grup: Members
  • Postari: 33
  • Inregistrat: 23-November 05

Postat 15 December 2005 - 02:48 PM

Asa... uite, am gasit ceva mult mai bun si mai flexibil :

http://www.bsdhome.com/avrdude/

Acest executabil are un fisier de configurare in care specifici pur si simplu in clar pinii de pe portul paralel care merg - fiecare la ce semnal de programare a atmelului - miso, mosi, rst, clk, vcc si gnd.

Riscul de a folosi "direct wiring" cred ca este zero, atata timp cat se face MAI INTAI programarea, abia apoi utilizarea microcontrolerului in placa de aplicatie (dezlegat de la calculator). Eu am facut cateva proiecte folosind portul paralel si pot sa-ti spun sigur ca nu se arde daca doar legi fire intre ele intre pinii de pe portul respectiv, deci daca nu vii cu o sursa de tensiune din exterior portul pc este perfect safe.
0

#4 Useril este offline   cristipa 

  • Incepator
  • PipPip
  • Grup: Members
  • Postari: 30
  • Inregistrat: 23-November 05

Postat 16 December 2005 - 01:11 PM

Salut,
Te poti duce la orice magazin de piese electronice si poti cumpara un microcontroler ieftin (de la cateva zeci de mii de lei - cativa lei noi) sa te joci cu el (sa inveti); microcontrolere se gasesc in toate aparatele electronice pe care le avem prin casa. De exemplu telecomanda de la televizor (sistemul se bazeaza in general pe microcontrolere cu "factor de umplere"). Sunt asa de multe tipuri si aplicatii cu microcontrolere ca ai putea sa scrii carti despre ele. Poti sa-ti iei unul gata programat sau unul neprogramat "nears"...

Asta e in cateva cuvinte...
succes!
0

#5 Useril este offline   moshulik 

  • Incepator
  • PipPip
  • Grup: Members
  • Postari: 33
  • Inregistrat: 23-November 05

Postat 19 December 2005 - 01:57 PM

Ei... tocmai am reusit sa asamblez si sa descarc intr-un microcontroler primul programel.
Am folosit un atmel - at90s1200.
Acuma - treaba sta in felul urmator. Netul este intr-adevar plin de documentatie, DAR problema este ca e PREA PLIN si nu stii ce sa alegi, nu stii ce cu ce se potriveste.
O sa descriu aici cum am facut eu, pas cu pas, varianta de implementare minimala (dpdv costuri).
1 - Programatorul - prin programator de microcontrolere se intelege o placa cu circuite (care in general este destul de complexa, unele placi au microcontrolere pe ea - CARE TREBUIESC incarcate cu programul pe un alt programator, mai au buffere pentru controlul tensiunilor si curentilor). In general programatoarele astea sunt la vanzare, insa costa in jur de 100 - 150 $ - pe net, ca la noi se gasesc doar de-alea "de firma" foarte scumpe - au avantajul ca sunt "autoconfigurabile", deci se preteaza la o gama larga de microcontrolere.
Tot scotocind, am gasit cel mai simplu programator de atmel-uri, la pagina asta :
http://home.wanadoo..../programmer.htm

Am realizat intocmai schema aia (prima de pe pagina), cu omisiunea conexiunii - CLK -> status4 - nu am gasit pinul clk pe microcontroler.

Descrierea pinilor microcontrolerului am gasit-o pe site-ul www.atmel.com - scrieti in fereastra de search at90s1200 de exemplu. Toata schema aia m-a costat asa : mufa cu 25 pini - 25.000 lei, condensatorii, cristalul si rezistentele si soclul cu 20 de pini pentru microcontroler - inca 25.000 - sa zicem 50.000 lei maxim cu totul.
Microcontrolerul propriu-zis, desigur - 70.000, la www.conexelectronic.ro

Asa - cata vreme se foloseste strict schema 1, adica luam microcontrolerul, il bagam in programator, infigem mufa la portul paralel - programam uC-ul, apoi il scoatem si-l punem in schema de aplicatie, NU E NICI UN RISC. Porul paralel nu se va arde cu curentul generat de el insusi, nu se conecteaza alta sursa de tensiune externa.

Eu am realizat schema si mi-a mers din prima, fara probleme.
Bun.. deci am rezolvat cu programatorul.

2 - Soft-ul de programare (softul care trimite semnalele pe portul paralel, pentru programarea microcontrolerului, prin intermediul programatorului hardware proaspat realizat). Cel mai bun si mai usor de inteles este www.avrdude.com - se downloadeaza de aici : http://download.sava...leases/avrdude/ - prima arhiva cu win32 pentru windows.

In el, in dir. bin gasim un fisier de configurare avrdude.conf , care contine definitia pinilor programatorului proaspat construit (intamplarea face ca acest programator sa fie cat de cat "standard", il gasim in biblioteca de programatoare cu indicativul sp12 - vedem in lista cu definitii de programatoare ca sunt necesare urmatoarele semnale - Vcc (se aduna curentul de la mai multi pini de date), GND, MISO, MOSI, SCK.
Asa... mai trebuie avrdude-gui - o interfata care ajuta mult la configurare si selectarea fisierului de descarcat in microcontroler - il gasiti aici : http://sourceforge.net/project/showfiles.p...group_id=125549

3 - Software-ul de compilat programul ce va fi descarcat in uC (acest compilator se mai numeste asamblor, dar in esenta e tot un compilator, ca ia fisier text si genereaza cod obiect). Pentru asta am folosit AvrStudio v4, descarcat de pe site-ul atmel, aici - http://www.atmel.com/dyn/products/tools_ca...C+&tool_id=2725

apasati pe icoana aia sub forma de cd-rom din dreptul lui Mature AVR Studio 4.11 (build 401)
Asta este foarte bun, ca are help relativ la limbajul assambler - foarte importante sunt directivele de compilare si de asemenea - instructiunile pentru fiecare uC in parte.


Cam asta e tot. Rezumat :
Se ia o sursa scrisa in assembler (astea se gasesc pe net ca exemple). Se compileaza cu avrstudio. Rezulta un fisier .hex (sau i(ntel)hex se mai numeste). Fisierul asta se selecteaza ca input la programatorul software (avr-dude-gui). Se conecteaza programatorul la portul paralel, avand uC infipt in el. Se bifeaza in avrdude-gui - operatiunea de write, modelul exact de uC, tipul programatorului hard cu care se comunica etc. etc.... Se apasa Execute - si voila. - avem un uC gata programato, bun de luat si de pus in placa de aplicatie.

4 - exista si software de compilat care primeste ca input program scris in C (vorba vine C), tot cu porturi se lucreaza, dar macar o variabila, un for acolo poti sa scrii decent, ca omu, nu cu ochii pe harta de registrii a uC-ului - pentru asta descarcati - WinAvr - http://sourceforge.net/project/showfiles.p...?group_id=68108 e o biblioteca cu executabile, nu are un gui ca lumea, lucreaza cu fisiere Makefile, dar nu-i greu. Contine de asemenea si avrdude si o gramada de alte extensii - pe mine ma intereseaza doar partea de compilator de C
Cum se ruleaza aplicatia - make all - asta cauta Makefile - ul si face toata treaba de compilare (Makefile-ul trebuie configurat inainte, adica indicat sursa ( .c) de compilat.

Nu mai dau link-uri aiurea, am zis sa dau o reteta minimala, testata si functionala, mai dau un singur link care detaliaza mai bine tot ce am scris eu, cu poze, procesul.

http://www.ladyada.n...pov2/index.html
0

#6 Useril este offline   Dragut 

  • MEGA Membru
  • PipPipPipPipPipPipPip
  • Grup: Members
  • Postari: 2453
  • Inregistrat: 28-February 05

Postat 19 December 2005 - 03:25 PM

@ moshulik
UITE ASTA E GENUL DE DISCUTIE CARE IMI MERGE LA SUFLET! :)
Scurt si la obiect!
STIMA!
0

#7 Useril este offline   ctotth 

  • Membru de onoare
  • PipPipPipPipPipPip
  • Grup: Members
  • Postari: 985
  • Inregistrat: 22-April 04

Postat 19 December 2005 - 04:37 PM

Pentru prototipare, teste, etc.. prefer varianta de programator separat cu circuit de buffer si port cu 10 pini. Adica se programeaza direct pe placa de lucru fara a mai muta microcontroleru din programator pe placa de lucru si inapoi la fiecare modificare in program. Circuitul e practic cam la fel de usor de realizat ca cel cu rezistente, plus ca nu mai conteaza numaru de pini sau pozitia acestora. Nu mai stiu pretul la 74HC244 dar cred ca l-am luat cu sub 25000 la comet electronic (pe site-ul lor e 9 eurocenti).

E bine ca programatorul sa fie pe placa separata iar conectarea la placa de lucru sa se faca printr-un port cu 6 sau 10 pini. E putin mai multa munca initiala dar astfel acelasi programator poate fi folosit pentru orice configuratie/numar de pini si orice placuta care prevede cei 6 pini suplimentari pentru (re)programarea direct in circuit.. Poate fi folosit de exemplu pentru upgrade la soft pe placute finalizate.

Recomand familia ATMega - cel mai mic membru este ATMega8, l-am gasit asta vara la conexelectronic cu 140000 de lei (vedeti ca tanti de la casa nu stie sa-l caute, ea cauta in programul ala "ATMEGA8*" care nu returneaza "ATMEGA8" din cauza stelutei "*" din coada, care nu match-uieste si blancul)

Are 1kbyte RAM si 8k de flash, mult mai comod decat zero ram (doar cei 32 de registrii 8 bit) si 1k flash din AT90S1200 - Pentru programare in C sau BASIC e nevoie de RAM, pentru stiva si variabile.

Si ca supliment interesant pentru modelisti - familia ATMega are functii de generare hardware PWM, fara a incarca unitatea de calcul. Tocmai potrivit pentru a genera comenzi servo sau implementarea de variatoare de putere pentru motoare.

cezar
0

#8 Useril este offline   profetu 

  • Incepator
  • PipPip
  • Grup: Members
  • Postari: 16
  • Inregistrat: 02-December 05

Postat 19 December 2005 - 05:00 PM

Poate va intereseaza si va ajuta
Exista un supersoft de proiectare care se numeshte Proteus si in care se poate simula aproape orice (inclusiv treaba cu motoarele PWM)cu cele mai cunoscute controlere de la cele mai importante firme
Are o gramada de samplere si tutoriale + ca nu prea ai cum sa gresesti ca iti arata unde si ce nu e in regula ,si scapi si de munca (cablaj,lipire,componente).
Daca totul iti functioneaza OK in simulare te duci iti cumperi controlerul si te apuci de treaba
Bafta
0

#9 Useril este offline   moshulik 

  • Incepator
  • PipPip
  • Grup: Members
  • Postari: 33
  • Inregistrat: 23-November 05

Postat 20 December 2005 - 09:38 AM

Da... se pare ca reteta pe care am pus-o e doar primul pas, greul abia acum incepe, scrierea software-ului. Inca nu m-am lamurit complet nici cu directivele de compilare din assembler, cu maparea porturilor, cel mai nasol - lucrul cu intreruperi, documentatia incepe cu detalii, dar lipseste "the big picture". Desi am citit pdf-ul de la at90s1200 de doua ori pana acum, abia acum inteleg ca nu are RAM, ci doar registri si ca are doar memorie ROM (care de fapt e eeprom-ul). Si totusi, "memoria de program", adica unde se stocheaza partea de cod, care este ? Inca nu inteleg cum se incarca memoria eeprom - ce directive de compilare trebuie date in program si cand rezulta un fisier .eep de incarcat in cip si cand nu (e continut in .hex).

Las deschisa lista asadar, pentru cine vrea sa prezinte pe romaneste si pe scurt "the big picture" despre cum se scrie un program in assembler de microcontrolere si arhitectura pe scurt a memoriei si functionarii unui uC.

Aceasta postare a fost editata de moshulik: 20 December 2005 - 09:42 AM

0

#10 Useril este offline   Cirip 

  • Membru de onoare
  • PipPipPipPipPipPip
  • Grup: Members
  • Postari: 732
  • Inregistrat: 07-January 05

Postat 20 December 2005 - 10:39 AM

Salut,

Incerc sa raspund eu la o parte din intrebari, desi nu am lucrat cu Atmel; eu lucrez cu PICuri, dar odata lamurite cateva chestii de baza, cam toate microcontrolerele sunt o apa si un pamant; principiile sunt in mare aceleasi. Lucrez cu PICuri, nu ptr ca ar fi mai bune, ci ptr ca asa am apucat si mi-am bricolat programator ptr ele.

Citeaza

cel mai nasol - lucrul cu intreruperi

Intreruperea este un semnal hardware, de obicei un impuls, care ii spune procesorului "Lasa tot si du-te si fa cutare!". Programul principal (sau la nivelul de baza) este intrerupt, iar executia se continua automat de la o adresa prestabilita. Altfel privita, intreruperea este "un call" declansat prin hardware. Este treaba programatorului sa aduca procesorul inapoi in prog principal.

Citeaza

abia acum inteleg ca nu are RAM, ci doar registri

Registrii aia sunt chiar RAMul. In fond e un alt mod de a denumi exact axelasi lucru. Practic si RAMul este o colectie de registri adresabili.

Citeaza

si ca are doar memorie ROM (care de fapt e eeprom-ul).

Aici cred ca e o confuzie. EEPROMUL este un fel de RAM nevolatil. Nu are legatura cu ROM-ul, care este de obicei folosit ptr stocarea programului. In EEPROM se scriu constante de calibrare, ID-uri, serii de fabricatie... date care nu trebuie sa se piarda la oprirea alimentarii, dar care trebuie sa poata fi alterate sub controlul softului de aplicatie. Nu se poate rula program din EEPROM.

Citeaza

Si totusi, "memoria de program", adica unde se stocheaza partea de cod, care este ?

Memoria de program este FLASH-ul. Procesorul mentionat contine 512 cuvinte de 16 biti de flash, adica poti scrie programe de cel mult 512 instructiuni.

Citeaza

Inca nu inteleg cum se incarca memoria eeprom

EEPROMUL se poate incarca sub controlul programului de aplicatie prin intermediu operarii registrelor EEAR, EEDR si EECR. E posibil sa existe si alte modalitati de incarcare. De ex, EEPROMul din PICuri se poate incarca atat cu programatorul cat si cu programul de aplicatie.

Detalii despre directive nu stiu, ptr ca nu folosesc mediul de programare Atmel, dar daca ai o intrebare mai la obiect, incerc sa raspund. Exista directive comune la mai multe asambloare.

Daca nu am fost suficient de clar, revino cu alte intrebari.

Spor!
Cirip
Teorie este atunci cand stii totul, dar nu merge nimic.
Practica este cand toate merg, dar nu stii de ce.
Montajele mele imbina teoria cu practica: nu merge nimic si nu stiu de ce.
0

#11 Useril este offline   cristipa 

  • Incepator
  • PipPip
  • Grup: Members
  • Postari: 30
  • Inregistrat: 23-November 05

Postat 20 December 2005 - 12:22 PM

moshulik, la 19 Dec 2005, 13:57, a spus:

Ei... tocmai am reusit sa asamblez si sa descarc intr-un microcontroler primul programel.
Am folosit un atmel - at90s1200.
...Nu mai dau link-uri aiurea, am zis sa dau o reteta minimala, testata si functionala, mai dau un singur link care detaliaza mai bine tot ce am scris eu, cu poze, procesul.

http://www.ladyada.n...pov2/index.html

:( invata assembler! Nu sari peste aceasta etapa.

Aceasta postare a fost editata de Marinaru: 20 December 2005 - 08:18 PM

succes!
0

#12 Useril este offline   moshulik 

  • Incepator
  • PipPip
  • Grup: Members
  • Postari: 33
  • Inregistrat: 23-November 05

Postat 20 December 2005 - 01:03 PM

Mda... cam asa e... nu trebuia sa sar peste etapa asta. Practic trebuie sa re-invat assembler de atmel si mai ales partea cu intreruperile, ca in asm in general ma descurcam pe hc-90, scriam direct in cod masina cateva instructiuni acolo...

Proiectul curent este asadar sa traduc o sursa asm scrisa pentru at89c2051 in asm pentru at90s1200, care reprezinta o comanda de aprindere cu avans variabil (cdi numita popular). Atasez sursa, daca mai intereseaza pe cineva.

Fisiere atasate


0

#13 Useril este offline   moshulik 

  • Incepator
  • PipPip
  • Grup: Members
  • Postari: 33
  • Inregistrat: 23-November 05

Postat 20 December 2005 - 02:32 PM

asa.. revin cu o mare intrebare...
at90s1200 nu are RAM, insa totusi are cateva instructiuni care folosesc stiva (revenirea din intrerupere in principiu). Cum specific in program adresa stivei (stack-pointer-ul) ? Nu am gasit un registru special cu rolul acesta, insa de unde stie instructiunea de unde sa ia stiva ?

Setul de instructiuni care afecteaza stiva sunt este :
intre/detaliere/efecte/flag-uri afectate/cycles

RCALL k Relative Call Subroutine STACK = PC+1, PC = PC + k + 1 None 3/4*
RET None Subroutine Return PC = STACK None 4/5*
RETI None Interrupt Return PC = STACK

De aici rezulta ca singurul acces la STACK este prin instructiunea RCALL, deci asta inseamna ca saltul la rutina de tratare a intreruperii trebuie obligatoriu facuta cu RCALL si nu cu rjmp (deoarece se pierde informatia punctului de revenire...) ?
0

#14 Useril este offline   Cirip 

  • Membru de onoare
  • PipPipPipPipPipPip
  • Grup: Members
  • Postari: 732
  • Inregistrat: 07-January 05

Postat 20 December 2005 - 08:14 PM

Citeaza

at90s1200 nu are RAM

Nu are RAM in sensul in care se ataseaza RAM unui Z80, dar setul ala de registre sunt de fapt RAMul lui. Acolo iti poti aloca variabile. Observa ca numarul asa ziselor registre este mai mare decat numarul registrelor interne ale lui Z80. Practic colectia aia de registre formeaza un mic RAM. Sau, daca te uiti la un PIC16F877, de exemplu, asta are peste 300 de "registre de lucru de uz general", care cred ca s-ar califica sa fie denumite "micul RAMuletz". ;)

Citeaza

Cum specific in program adresa stivei (stack-pointer-ul) ?

Nu o specifici. Arhitectura este de tip RISC si e putin diferita de cea cu care ai fost obisnuit la Z80. Stack Pointerul este initializat automat la reset. Nu ai acces direct la el. De asemenea, SP adreseaza un set de registre dedicate, care nu sunt vizibile programatorului. Nu poti pozitiona stiva oriunde in RAM (in sensul CISCurilor, Z80). Majoritatea RISCurilor nu au instructiuni de tip Push sau Pop. De asemenea, stiva lui at90s1200 nu iti permite mai mult de 3 nivele.

Citeaza

Nu am gasit un registru special cu rolul acesta, insa de unde stie instructiunea de unde sa ia stiva ?

Stack Pointerul este initializat la reset. Nu ai acces direct la el. Daca ai facut mai mult de 3 call-uri sau intreruperi, l-ai dat peste cap si ai pierdut adresa de revenire de "acum 3 salvari". Call, return si intreruperile folosesc SP-ul asa cum il gasesc. Incrementarea/decremenatrea SP-ului se face sincron cu call, return, etc...

Citeaza

deci asta inseamna ca saltul la rutina de tratare a intreruperii trebuie obligatoriu facuta cu RCALL si nu cu rjmp

Nu. Primirea unui semnal de intrerupere, in cazul in care intreruperea este autorizata, determina direct callul la adresa indicata de vectorul de intrerupere, fara sa mai fie necesara executia unei instructiuni de tip call explicit. Call-ul se face implicit, ca urmare a primirii intreruperii hardware. De altfel, intreruperea este determinata de un eveniment asupra caruia procesorul nu are control direct. In consecinta nu poti prevedea prin program "cand sa sara la intrerupere". Asta este si filozofia intreruperii. Procul reactioneaza la un eveniment exterior, necorelat cu executia programului la nivel de baza.

Si... subscriu la ideea de a te familiariza cu asemblerul intai. Te ajuta sa intelegi ce se intampla in procesor.


Cirip

Aceasta postare a fost editata de Cirip: 21 December 2005 - 03:02 AM

Teorie este atunci cand stii totul, dar nu merge nimic.
Practica este cand toate merg, dar nu stii de ce.
Montajele mele imbina teoria cu practica: nu merge nimic si nu stiu de ce.
0

#15 Useril este offline   moshulik 

  • Incepator
  • PipPip
  • Grup: Members
  • Postari: 33
  • Inregistrat: 23-November 05

Postat 09 January 2006 - 03:51 PM

Gata, m-am lamurit acum mult mai bine, am reusit sa scriu si primul program serios, anume gestionarea digitala a avansului la aprindere pentru un motor. Programul care l-am dat aici mai devreme nu a putut fi tradus pentru at90s1200, pentru ca acest microcontroler, fiind "entry-level" in gama at90s... nu are nici macar mod de adresare de date din flash. Memoria flash este accesibila ca adresare doar prin program-counter, deci serveste strict pentru stocarea programului. Desi pot scrie constante in aceasta memorie, nu o pot accesa indexat. Singura varianta pentru stocarea tabelei de valori ar fi fost in memoria eeprom, care are o dimensiune de numai 64 octeti insa. Am ales o a treia solutie - anume calcularea in timp real a valorii, dupa o functie liniara. Functia are ca parametru turatia si ca iesire durata de intarziere la aprindere relativ la momentul captarii impulsului de la senzor (platina sau senzor magnetic), impuls calibrat sa fie dat la 50 de grade motor inainte de PMS.
Oricum, pentru cine are de gand sa se apuce de un proiect, ii recomand alt model de microcontroler, nu at90s1200. Unele modele am vazut ca au PWM built-in.
Revenind la aplicabilitate... Cam cum functioneaza un modul de emisie/receptie RC ? Ma gandesc ca emitatorul este un oscilator care lucreaza pe o frecventa in jur de 24 MHz sa zicem. Cum se face insa modularea semnalului de comanda (serializarea acestuia sa zicem ca este simpla, adica o conversie analog-digital aplicata pe rezistenta citita pe potentiometrele manetelor de comanda) si mai ales cum se face demodularea, decodificarea mesajului la receptie. In general se transmite o singura variabila de comanda pe cate un canal ? Cum se genereaza canalele de emisie/receptie plecandu-se de la un singur oscilator cu quartz (de frecventa fixa deci) ?
0

#16 Useril este offline   Cirip 

  • Membru de onoare
  • PipPipPipPipPipPip
  • Grup: Members
  • Postari: 732
  • Inregistrat: 07-January 05

Postat 09 January 2006 - 08:38 PM

Citeaza

Cam cum functioneaza un modul de emisie/receptie RC ?

Sunt separate, nu este "un modul". Emisia se face cu emitatorul din telecomanda, iar receptia cu receptorul de pe model.

Citeaza

Ma gandesc ca emitatorul este un oscilator care lucreaza pe o frecventa in jur de 24 MHz sa zicem. Cum se face insa modularea semnalului de comanda

Cele mai frecvent intalnite sunt modulatia de frecventa (MF) si modulatia de amplitudine (MA). Fiecare are avantaje si dezavantaje.

Citeaza

si mai ales cum se face demodularea, decodificarea mesajului la receptie.

Demodularea se face cu un receptor MA sau MF, in fct de modulatia emitatorului. Decodarea se face cu un registru de deplasare la versiunile simple sau cu un procesor la cele mai bengoase.

Citeaza

In general se transmite o singura variabila de comanda pe cate un canal ?

Daca prin canal intelegi canalul RF, atunci nu. Canalele reprezentand comenzile sunt impachetate intr-un asa zis cadru (frame), care se repeta la aproximativ 20ms. Semnalul impachetat moduleaza MA sau MF emitatorul acordat pe canalul RF. Aici este posibila o confuzie de termeni. Canalul RF este unul singur. Canalele, in sensul de "cate comenzi simultane", sunt mai multe.

Citeaza

Cum se genereaza canalele de emisie/receptie plecandu-se de la un singur oscilator cu quartz (de frecventa fixa deci) ?

"Canal" in sensul RF este unul singur, daca nu schimbi cuartul sau nu comuti sinteza, la alea mai noi. Canalele, in sensul de comenzi, se transmit secvential, dar suficient de repede ca sa para simultane.

Cirip

Aceasta postare a fost editata de Cirip: 09 January 2006 - 08:38 PM

Teorie este atunci cand stii totul, dar nu merge nimic.
Practica este cand toate merg, dar nu stii de ce.
Montajele mele imbina teoria cu practica: nu merge nimic si nu stiu de ce.
0

#17 Useril este offline   moshulik 

  • Incepator
  • PipPip
  • Grup: Members
  • Postari: 33
  • Inregistrat: 23-November 05

Postat 10 January 2006 - 10:33 AM

Bun, acum am inteles, impachetarea si protocolul duce la numarul de canale, frame-ul de 20 de ms contine toate variabilele de transmis, treaba cu deplasarea pe frecventa cred ca mi-a ramas in minte de la radio-comenzile de pe vremuri, cand pe purtatoarea de radiofrecventa se modulau diverse frecvente mai mici, care intrau in rezonanta cu circuite acordate de pe receptor. In cazul asta pare destul de clar acum, cate un microcontroler la fiecare terminal (rx si tx) ar face zic eu destul de bine codificarea (impachetarea) si decodificarea variabilelor de transmis.

Daca m-as apuca de construit asta, as pleca de la un receptor FM din comert, sunt unele digitale la 100.000 de lei care au doua butoane de comanda - "reset" - adu frecventa pe care este acordat la capatul inferior al benzii (88MHz) si "search" - cauta si opreste cautarea la prima frecventa detectata din eter. Functiile sunt suficiente zic eu, receptorul este realizat miniatural, usor, iesirea audio va intra direct in etajul de esantionare din microcontroler, eventual prin intrarea comparatorului analogic imbricat in microcontroler, care va avea o tensiune de referinta pentru a lucra in regim "trigger shmit".

Emitatorul - reuseam mai demult sa fac emitatoare FM cu bobina si condensatori, destul de stabile. Modularea se face destul de usor - e suficient de aplicat in baza tranzistorului semnalul cu variabilele serializate generat de microcontroler si gata.


Alta aplicatie la care ma gandesc pentru microcontrolere - realizarea unor module GPS+GSM pentru localizare. Sistemul GPS este free pentru "read-only", insa nu se poate face emisie. Asadar, pentru localizare, se aplica protocolul urmator : GPS-ul pune la dispozitie coordonatele pozitiei curente - latitudine/longitudine catre microcontroler. Acesta le preia, compune apoi un SMS, il scrie in memoria GSM-ului si ii da comanda de trimitere, la un numar prestabilit. Procedura este initiata insa sa zicem la receptia unui sms de la un anumit numar si cu un anumit cod.

Nu stiu cat de utila ar fi aceasta aplicatie in RC, insa in perspectiva unui modul de "cercetare" cu raza mare de actiune, cu camera de luat vederi "on-board", ar fi o idee pentru localizarea "spionului pierdut".... http://www.rhcforum....tyle_emoticons/default/biggrin.gif
0

#18 Useril este offline   Cirip 

  • Membru de onoare
  • PipPipPipPipPipPip
  • Grup: Members
  • Postari: 732
  • Inregistrat: 07-January 05

Postat 10 January 2006 - 05:32 PM

Citeaza

Daca m-as apuca de construit asta, as pleca de la un receptor FM din comert

Nu cred ca merge. Rx din comert sunt pentru radiodifuziune unde deviatia de frecventa a FMului este de 75KHz. Statiile de telecomanda transmit FM de banda ingusta (NBFM). Deviatia e de maxim 5Khz la varf de modulatie. Un receptor care "asteapta" deviatie de 75KHz va scoate semnal f mic si cu raport semnal zgomot redus, daca primeste deviatie de numai 5KHz. In plus, un canal de radiodifuziune este lat de 300KHz. Un canal de telecomanda "incape" in 20KHz (in banda de 72MHz). Daca selectivitatea receptorului este de 300KHz, Rx-ul va receptiona simultan 300/20=15 canale adiacente. Nu spun ca nu se poate face receptor. Eu am facut, dar abordarea e un pic altfel.

Citeaza

cauta si opreste cautarea la prima frecventa detectata din eter

Ce te faci daca pierde temporar legatura, intra in scan si "se agatza" pe alta statie? Sau... zbori singur, pierde legatura si are nevoie de cateva secunde ptr reacord. Sunt doar cateva subiecte de meditatie.

Citeaza

emitatoare FM cu bobina si condensatori, destul de stabile

Stabilitatea oferita de bobine si condensatori este cu ordine de marime mai slaba decat cea oferita de cuart sau sinteza. Nu te poti baza pe un oscilator liber la o statie de telecomanda. Daca fuge de pe frecventa si pierzi legatura cu modelul tau, asta e una, dar vei intra peste alti zburatori din canalele adiacente. Poate ca este posibil de facut un emitator, dar trebuie respectat un minim de reguli.

Cirip
Teorie este atunci cand stii totul, dar nu merge nimic.
Practica este cand toate merg, dar nu stii de ce.
Montajele mele imbina teoria cu practica: nu merge nimic si nu stiu de ce.
0

#19 Useril este offline   pavcostel 

  • Membru Fumator
  • PipPipPipPipPipPipPip
  • Grup: Members
  • Postari: 1596
  • Inregistrat: 01-October 04
  • Gender:Male
  • Location:Bucuresti

Postat 10 January 2006 - 06:13 PM

Baga la cautare si "Simpla conversie/Dubla conversie". O sa vezi ca sunt totusi diferente mari. Cauta si datasheet-ul lui TA31136FN, e un circuit simplu care se mai foloseste prin receptoarele RC. Apoi trebuie vazute si cateva exemple cu etajele de iesire(decodificare), fie cu registri de deplasare fie cu PIC, cum au mai fost. Aici se pot ingloba mai multe chestii. La fel, unele se inglobeaza poate in controllerul de la motor. (la electrice, evident!). La mine glitch counter-ul e in controller, desi nu e cel mai stralucit mod... Mai multe amanunte poate sa-ti dea chiar Cirip, el e artistul cu receptoare diy! :o

Parerea mea: as lua o statie de emisie legala, industriala, second-second hand. Nu m-ar alerga nimeni ca l-am bruiat! http://www.rhcforum....tyle_emoticons/default/laugh.gif Si pe baza ei as experimenta receptoare. Apropo, diverse componente bune erau prin pagerele acelea mai vechi, se mai gaseau prin targ, parca, la preturi...
Tot asa pe net gasesti mai mult in engleza/germana cam toata teoria transmisiei, receptiei,codificare/decodificare pentru R/C. Trage-i un Google...

Cu stima,
Costel

P.S.- uite si aici multe exemple: http://www.rcgroups....splay.php?f=199
35 MHz, canal 60,62,78.
0

#20 Useril este offline   domnu_doctor 

  • MEGA Membru
  • PipPipPipPipPipPipPip
  • Grup: Members
  • Postari: 3218
  • Inregistrat: 11-April 05

Postat 10 January 2006 - 08:02 PM

Uita-te un pic si p-aici si poate-ti mai completezi imaginea despre problema. E doar melodia problemei... Cuvintele-s muuulte, taree...

Stima,
40,665 MHz = Ch 50, FM, PPM, Legal
35,150 MHz = Ch 75, FM, PPM, Legal
27,145 MHz = Ch 19, AM, PPM, Legal
0

Arata acest topic


Pagina 1 din 1

3 useri citesc topicul
0 membri, 3 vizitatori, 0 utilizatori anonimi

913Creative.ro