Sari la conținut
ELFORUM - Forumul electronistilor

Ce AVR sa aleg?


Vizitator DanielV

Postări Recomandate

Vizitator DanielV

Buna,Sunt nou in asta, si am nevoie sa aleg un uC Atmel.Acesta va primi date de la un senzor de viteza si de la un accelerometru, va calcula viteza si inclinarea curbei si va transmite cele 2 date catre un alt uC, de tip mbed.org .Care ar fi o alegere buna? Nu vreau sa iau cel mai performant AVR, ci cel mai potrivit. Multumesc!

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

Top autori în acest subiect

  • matache

    10

  • Liviu M

    8

  • stefan_k

    3

  • godFather89

    3

Top autori în acest subiect

Vizitator DanielV

Buna intrebarea, inca nu i-am gasit un raspuns. AVR=ul se va fala in miscare, celalat uC va fi static, ma gandeam sa flosesc un modul blutooth pentru a comunica... Nu ma pricep f bine nici aici :) Voi cum ati face, si ce AVR ati alege?

Link spre comentariu

Pai, stai asa, ca interfata/protocolul de comunicare poate fi destul de importanta, chiar cruciala.Vezi si placile de la mbed ce suporta (la o privire rapida, am vazut i2c si can).I2C: daca cele doua placi vor sta suficient de aproape una de altaCAN: poate te rezolva, dar tot ai nevoie de fire; daca mergi pe asta, alegi si un avr corespunzator (sa aiba aceasta interfata - din categoria automotive)Bluetooth sau orice altceva "wireless": stabileste exact ce folosesti, sa ai librarie facuta si pt avr si pt arm (sa te pui sa o scrii tu ... de multe ori nu are rost); vezi cat de mare e libraria (exact cat iti ocupa firmware-ul compilat cu ea), si in functie de asta poti alege si avr-ul (in functie de flash-ul disponibil). Chiar daca iti scrii tu singur tot softul de comunicare, tot trebuie sa stii cam cat flash/ram/etc ai nevoie pentru el.Tu ai cerut "cel mai potrivit"; la prima descriere iti mergea cam orice cu 4KB flash (Atmega48, de exemplu) sau chiar mai mic; dar dupa ce intri in detalii vezi ca s-ar putea chiar sa ai nevoie de mai mult flash disponibil.Daca e doar un modul, atunci as merge pe varianta "cat mai mare" (un exemplar nu te rupe la buzunar); dar daca vrei "cel mai potrivit", trebuie sa gandesti bine potriveala asta ...

Link spre comentariu

Pentru a elimina din variante, poate ar trebui ca DanielV sa spuna putin mai multe despre proiect. Din cate stiu eu, e vorba de controlul trenuletelor pe diorama. In cazul asta, e clar ca orice comunicatie "pe fir" e greu de implementat.Ma rog, poate exagerez, exista deja cateva protocoale care folosesc sinele pe post de medii de comunicatie (cel mai raspandit fiind DCC), da' nu stiu in ce masura pot fi folosite sinele pentru proiectul de fata.

Link spre comentariu
Vizitator DanielV

Merci de raspunsuri, ma mai documentez despre ce mi-ati recomandat. I2C pare ok, cat inseamna mica? Functioneaza pe o raza de 3-4 m?

@Liviu : Da, este vorba despre controlul unui trenulet, pe o diorama. Sa stii ca mi-a trecut si mie prin minte sa comunic prin sina, dar ma gandesc ca poate ar fi mai bine totusi sa comunice prin I2C sau blutooth, sau ce metoda mai gasim. Ideea e sa fie o metoda cat mai simplu de implementat, eficinet si ieftin :d

 

Pe trenulet va fi AVR-ul, va da ture pe langa Statia centrala, unde mbed-ul va controla prin impulsuri pwm vitza motorului de c.c. al locomotivei.

 

AVR-ul de pe Loco are ca scop primirea de informatii de la accelerometru si de la senzorul de viteza ( aici nu m-am decis inca ce sa utilizez pt calcularea ei), calculeaza viteza si inclinarea curbei si le transmite la uC-ul de tip mbed.org. Acesta din urma ia deciziile pe baza celor 2 intrari, si va controla sensul si viteza locomotivei.

 

Problema: Cum transmite AVR-ul la mbed wireless, la o distanta de pana la 3-4?

Ce AVR sa folosesc?

 

Mentionez ca proiectul reprezinta lucrarea mea de diploma.

 

Mersi!

Link spre comentariu

Acum e ceva mai clar.Comunicarea e bidirectionala sau doar de la locomotiva la statie?Nu cred ca I2C-ul e o solutie, adica nu direct (locomotiva->statie); ai nevoie de fire (doua), si e destul de sensibil (e gandit pentru distante scurte, nu stiu clar cat, citez doar de pe undeva "cativa metri").Nu m-as gandi nici la bluetooth; e drept ca nu stiu multe despre el, dar il consider destul de complicat.Fie un serial "clasic" daca poti rezolva cumva comunicarea prin sine, fie radio.Arunca o privire la ce au cei de la tme (semiconductori->module de comunicatii); au si module separat RX, TX, cat si impreuna (RX+TX) - in functie de cum doresti sa fie comunicarea; unele sunt destul de ieftine, in jur de 10-15-20 lei un modul Hope (RX, TX, sau RTX). Nu ai nevoie de putere mare.Pe partea de AVR, probabil cel mai lejer e sa sari la ceva din seria Atmega88/168/328 sau Atmega8/16; sunt printre cele mai uzuale, poti gasi mai rapid "ajutor" pentru ele.Nu stiu macheta cat de loc disponibil iti ofera; gandeste dinainte daca folosesti capsule DIP sau trebuie sa treci la SMD.

Link spre comentariu

Daca nu vrei sa faci o diorama cu o singura locomotiva, atunci controlul vitezei (generarea PWM) trebuie facuta tot de controllerul de pe locomotiva. Altfel toate locomotivele vor circula cu aceeasi viteza. Exact din cauza limitarii asteia a fost inventat DCC-ul.

Link spre comentariu

Daca e o singura locomotiva, poti folosi si IR. E ceva mai ieftin decat radio si merge pana la vreo 7m. Pui LED-ul sa bata in sus si agati cumva receiver-ul deasupra dioramei.Mai e si 1 wire protocol care il poti folosi prin sine (banuiesc, nu stiu exact cum le ai legate).

Link spre comentariu
  • 2 săptămâni mai târziu...
Vizitator DanielV

Multumesc de raspunsuri.

 

Am decis sa folosesc pana la urma, drept cale de comunicatie intre mbed si AVR, sina de cale ferata.

 

AVR-ul inca nu l-am ales definitiv, ideea e sa fie de dimensiune f redusa, sa primeasca date de la accelerometru (pt detectarea inclinarii curbei) si de la senzorul IR ( pentru detectarea vitezei, va fi plasat in fata locomotivei si va detecta trecerea de la o traversa la alta. Astfel cu nr de traverse parcurse de tren / s vom avea viteza trenului.).

 

OK, acum : 1.Cum pot realiza electronic comunicarea dintre mbed si AVR prin sina? Concret ce module folosesc, ca sa pot desena schema in proteus? Am gasit ceva despre protocolul de comunicare aici.

 

2. Ce ziceti de AVR-ul acesta, avand in vedere cerintele de mai sus? Aveti alta recomandare?

 

3. Cam cum ar arata o schema electrica ( in proteus de ex) la ce am zis pana acum?

 

Am gasit o schema electrica pentru accelerometru, si una pt senzorul IR.

 

Orice idei aveti, sunteti bineveniti! Multumesc!

Link spre comentariu

1) La ce este nevoie de doua microcontrolere, unul pe locomotiva si celalalt in gara?

 

Cel mobil poate face tot, citire senzori si operatii de control al mersului trenului. Exista mai multe locomotive care trebuie coordonate central de un procesor, acel mbed?

 

2) Am serioase indoieli ca accelerometrul este senzorul nimerit pentru detectarea inclinarii locomotivei atit longitudinal in panta de plan inclinat cit si lateral la curbe. Mai degraba ai nevoie de un giroscop integrat intr-un SMD. Vezi: http://www.sparkfun.com/pages/accel_gyro_guide

 

3) Merge sa calculezi viteza trenului cu LED si fototranzistor dar asta presupune sa ai sinele puse pe poleiala de ciocolata pentru a avea un contrast clar intre traversa neagra si spatiul dintre traverse.

 

4) Daca ai si accelerometru atunci poti calcula viteza integrind acceleratia de la momentul zero cind locomotiva porneste si pina la timpul prezent. Metoda introduce insa erori mari de integrare, trebuind sa opresti des trenul ca sa reincepi integrarea.

Link spre comentariu
Vizitator DanielV

1) Pentru ca cel mobil va fi f mic, doar citeste senzorii si calculeaza cele 2 marimi, apoi le transmite la ARM. ARM-ul are toata logica fuzzy programata pe baza careia va lua deciziile si va comanda locomotiva.E doar o singura locomotiva.2) Mersi de link. Si eu am indoilei, dar totusi incerc, vedem ce iese.4)Varianta asta e interesanta dar destul de dificila din cate spui.Are cineva o solutie la intrebarile mele de mai sus putin? :) [ Pe scurt, cum pot comunica prin sine intre cele 2 uC? ]Mersi!

Link spre comentariu

Pe scurt, cum pot comunica prin sine intre cele 2 uC?

Este complicat si nerecomandabil in cazul tau. Te disipi in prea multe obiective de realizat.

Daca tii neaparat poti citi documentatia de aici:

1) http://en.wikipedia.org/wiki/Digital_mo ... s#Throttle

2) http://en.wikipedia.org/wiki/Digital_Command_Control

Daca logica fuzzy de control al locomotivei este deja implementata si ai mbed-ul acela atunci poate renteaza sa lucrezi cu doua procesoare insa 95% te complici inutil.

 

Din cite vad eu nu iti trebuie mai mult de un Atmega328p pentru tot: citire senzori si control tren.

 

Daca recitesti linkul pe care ti l-am dat in mesajul meu anterior vei vedea ca senzorii de acceleratie sau inclinare (tip giroscop circuit integrat, la fel ca accelerometrul, nu ceva mecanic) au ei insisi procesor atasat astfel ca tu cu microcontrolerul Atmega de pe locomotiva nu trebuie decit sa citesti serial niste numere de la acestia care reprezinta acceleratia si inclinarea, fara a fi obligat la o intrega nebunie de calcule prin care ADC-ul de pe Atmeg converteste iesirile analogice ale accelerometrului si senzorului de inclinare si apoi prin operatii matematice se deduce numeric acceleratia si inclinarea.

 

Controlul vitezei locomotivei este simplu chiar daca alimentarea se afla in gara

Sa spunem ca tensiunea de alimentare din sine este de 5V. Asta inseamna ca in plan orizontal locomotiva merge cu viteza constanta. Ca sa controlezi viteza din tren, cu propriile mijloace de bord, nu alimentezi motorul din sine direct ci prin intermediul unui tranzistor de choppare comandat de un pin PWM al controllerului Atmega. Variind factorul de umplere turezi motorul proportional cu timpul cit tranzistorul sta deschis pe o perioada si astfel locomotiva isi regleaza singura viteza desi in sine este tensiune fixa.

 

In alta ordine de idei, chestiunea cu microcontrolerul de dimensiune redusa nu pare sa se justifice. Poti monta placa cu senzori si uC deasupra locomotivei sau intr-un vagon marfar deschis tras de aceasta.

Odata pus la punct sistemul, acesta se poate face foarte mic folosind controlere cu multi pini nu doar 6-8. Sigur, trebuie comandat un PCB deoarece nu il poti realiza artizanal asa mic.

Pentru proiectul pe care il ai nu este nevoie de asa reduceri de dimensiuni.

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