Radiocomanda cu microcontroller Radiocomanda cu PIC 16F84
#151
Postat 30 November 2004 - 09:06 PM
Pai tocmai cu sonarul poate afla cineva unde e un submarin dotat cu asa ceva.
Cu conditia sa aiba deja harta fundului apelor in care se scufunda si un soft adecvat care din compararea hartii si a datelor de la sonar sa calculeze pozitia 3-dimensionala a navei.
Simplu si sigur.
#152
Postat 30 November 2004 - 09:28 PM
___Andrei
#153
Postat 30 November 2004 - 09:31 PM
O merge si cu un set de dopuri plutitoare colorate diferit, insirate pe o ata, din metru in metru.
In functie de culoarea primului dop (sau numar de dopuri la suprafata) ai idee cat de adinc e scufundat .
Apoi mai stii cu o buna aproximatie si unde este.
Apoi daca ti se agata de o radacina sau il infuleca vreun crocodil ai macar un capat de ata de care sa tragi.
Si, in fine, poti incerca sa ridici antena sus de tot la ultimu dop.
Nu stiu cum s-ar plia o astfel de sfoara in proiectu tau..
cezar
#154
Postat 30 November 2004 - 10:23 PM
Mdea deci un lucru e clar..balaria aia de port LPT nu poate sa-mi alimenteze receptorul..am lipit toti pinii de date intre ei si am dat pe toti "5V"(pt ca defapt sunt vreo 4.5) si tot nu are putere..2.5mA si ii trebuiesc 4-5mA :|
Asa ca tre sa ma servesc dintr-un flux mai mare..o sursa de 200W de PC http://www.rhcforum....tyle_emoticons/default/smile.gif)
Mi se pare ca fara emitator asta incearca sa dea 0 logic(inca nu e alimentat corect) Deci cred ca am rezolvat si cu sincronizarea..generez intreruperi si dupa ce incepe pachetul sa vina dezactivez intreruperea si procesez datele dupa ce se termina pachetul iarasi setez enable pe intrerupere(eu citesc toata document in engl ma exprim mai greu la termenii astia in romana scuzati :| )
MrSpace pls daca poti sa-mi spui tu tot ceva in genul asta ai folosit la receptor ca sa te sincronizezi cu emitatorul?(interupt enable, prinzi inceputul de pachet(primul bit care e 1)), interrupt disable, faci poll la timpi constanti (viteza de transmisie/receptie fixa), in felul asta citesti tot pachetul si cand dai de stop faci reenable pe intrerupere ca sa te pregatesti de alt pachet)
___Andrei
Aceasta postare a fost editata de wingless: 30 November 2004 - 10:29 PM
#155
Postat 30 November 2004 - 10:31 PM
1) vrea intr-adevar sa fac un submarin
2) stiu ca undele radio (XXMhz) nu circula sub apa... si ca va trebui sa gasesc o solutie pt a mentine legatura cu sub-ul (una ar fii sa tin antena la suprafata.. sau sa il leg cu sfoara :D)
3) joy este suficient pt controlul directie de mers (sus-jos ; st-dr) nefiind necesare decet 2 canale -- ne fiind obligatorie inclinarea in curbe -- deci eleroanele vor fii comandate de joy nu tastatura.
4) interfata sotf .. will be a bitch :)
5) sunt constient de necesitatea unor senzori destul de sofisticati pt determinarea adancimii. poaitiei relative ect.... poate un GPS ar fii bun .. dar este prea scupm... si nu stiu cat de mic/usor este si nici cum lureaza practic (nu teoretic-chestia cu triunghiulatia)
6) sonarul este un "ambatz" tipic oltenesc :D .... am vazut pe net pe uniii care isi pusesera tuburi las-torpile pe sub-urile lor si eu am zis sa fac ceva si mai cool :D, la acest "ambatz" se poate renunta .. daca se dovedeste nefiiabil (prea scump/irealizabil) http://www.rhcforum....tyle_emoticons/default/tongue.gif
#156
Postat 30 November 2004 - 10:41 PM
#157
Postat 01 December 2004 - 12:21 AM
Cu triangulatia in principiu e simplu (in practica mi-as prinde urechile ;-) )
- emiti un pacanit de pe submarin.
- Asculti cu doua-trei microfoane fixe amplasate la ceva distanta unu de altul si pozitie cunoscuta.
- in f. de intarzierea cu care ajunge pacanitu la microfon si viteza sunetului in apa afli distanta de la submarin la fiecare microfon
- trasezi trei cercuri cu centrul in microfon si raza egala cu distanta calculata pana la submarin
- unde se intersecteaza cercurile e submarinu.
Si sa ai ceasurile sincronizate la cateva microsecunde intre submarin si "baza". Cam mult pentru un proiect de o persoana.
cezar
#158
Postat 01 December 2004 - 12:27 AM
wingless, la 26 Nov 2004, 14:28, a spus:
Scuze ca revin in preistorie! O s-o reiau cu mesajul din care citez. Vezi ca sunt doua executabile de DOS care fac exact lucrul la care te referi. Adica transmisie de date pe LPT intre doua calculatoare fara nimic pe ele, adica fara programele de windows specializate in asa ceva. Ai nevoie de sistemul de operare, cele doua programe si cel de trimis. Cred ca in cateva minute imi aduc aminte si numele lor, ca le-am folosit candva... In caz contrar, o sa le caut pe CD-uri. Eventual poti folosi ce gasesti in volcov sau norton commander sau similare. Totusi existau doua executabile mici si foarte simple. Sunt sigur ca poti face mai mult, dar daca n-ai timp, foloseste ce exista gata facut. Daca te plictisesti si esti in stare, fa un program care sa foloseasca LPT-ul pentru transmisie seriala, adica fa-l compatibil cu un COM. Nu-i complicat si-i fun rau de tot.
Spor la treaba!
Wingless, o sa verific ce ai zis privind amperajul pe LPT. Am comandat motoare de sute de mA si s-au rotit acceptabil. Cred ca se poate si mai mult, fara legare in paralel a pinilor. N-as crede ca se obtin sute de mA, dar cateva zeci cred se ca suporta. Cu atat mai mult 4-5 mA. Trebuie incercat din nou. Ca tot am ocazia, ai incercat cu un 286-486? Cred ca astea suporta cateva zeci de mA pe fiecare pin.
Telefon: 0721 385365
#159
Postat 01 December 2004 - 11:26 AM
ctotth, la 1 Dec 2004, 00:21, a spus:
Cu triangulatia in principiu e simplu (in practica mi-as prinde urechile ;-) )
- emiti un pacanit de pe submarin.
- Asculti cu doua-trei microfoane fixe amplasate la ceva distanta unu de altul si pozitie cunoscuta.
- in f. de intarzierea cu care ajunge pacanitu la microfon si viteza sunetului in apa afli distanta de la submarin la fiecare microfon
- trasezi trei cercuri cu centrul in microfon si raza egala cu distanta calculata pana la submarin
- unde se intersecteaza cercurile e submarinu.
Si sa ai ceasurile sincronizate la cateva microsecunde intre submarin si "baza". Cam mult pentru un proiect de o persoana.
cezar
http://www.rhcforum....tyle_emoticons/default/smile.gif cum am zis... teoretic e simplu... ( :D ) practica te omoara :D
cat despre chestia asta:
"GPS-ul nu merge nici sub pom, ce sa mai zic daca-l scufunzi in apa." ;
vai de saracii americani..... asta explica de ce cu toata tehnologia lor nu sunt capabili sa ii invinga pe "teroristi" :D :D
#160
Postat 01 December 2004 - 11:58 AM
NU, e o placa cu cipset i845 (Dasta de pentium 3) Controlleru de lpt banuiesc ca e integrat in chipset(southbridge) eu am masurat si asa mi-a dat :D Ca ma enervam ca imi dadea receptorul la iesire 1.3 volti care nu e nici 1 nici 0 e in zona interzisa si astia se laudau ca e receptor digital...Si dupa am vazut ca cad doar 3.7volti pe el si acolo zicea sa cada 4.5 5 volti si m-am mirat dupa am dezlipit si am masurat curentu 2mA. Si am zis ca de-aia nu da nici 0 nici 1 pe iesire si uite acum am scos din formol o sursa de calc si ii fac lipeala sa o folosesc in scopul asta, sa vad eu ca mai plange ala de curent
Apoi eu vreau sa fac eu programul ca sa am un punct de pornire pt programele microcontrollerelor pentru emitator si receptor. Sa vad cum rezolv problema sincronizarii etc.
Apropo, Bitex am facut un timer din ala pt microsecunde(doar pt procesoare pentium merge) pt ca 1 milisecunda cat imi pune la dispozitie delay() nu e suficient ca trimit date prea incet Exista un registru intern in procesor care se incrementeaza la fiecare ciclu. Asa ca la inceput stau vreo 2 secunde si determin viteza procesorului(la mine 735.12Mhz :D ) si dupa folosesc coeficientul asta de viteza ca sa fac delay-uri mici (de ordinul microsec)
Imi zici daca te intereseaza codul si ti-l trimit. Nu e cu clase si pretentii d-astea e cu functii sa inteleaga omu mai usor.
___Andrei
La multi ani romanilor oriunde ati fi http://www.rhcforum....tyle_emoticons/default/smile.gif
Aceasta postare a fost editata de wingless: 01 December 2004 - 12:01 PM
#161
Postat 01 December 2004 - 11:02 PM
#162
Postat 02 December 2004 - 03:16 PM
In prima faza face figuri dar il iau mai din scurt in weekend sa vad exact ce are(deocamdata scoate pe iesirea "digitala" 1.3volti chiar si corect alimentat :| o fi de la montaj, nu mai am timp sa ma uit acum)
Deci in weekend vin cu rezultate :D
___Andrei
Si inca ceva: va rog cine are timp sa se uite pe pdf-ul cu specificatii si pe linkurile de la inceput si sa-mi zica ce crede: iesirea receptorului urmareste intrarea emitatorului? sau daca pun intrarea emitatorului in 0 logic la iesire am un puls scurt de 0 indiferent cat tin emitatorul in 0? Eu cred ca receptorul tine iesirea in 0 sau 1 atata timpo cat tin eu intrarea emitatorului in 0 sau 1 si nu da un singur puls la iesire, dar poate ma insel eu :|
O saa fac si niste poze sa le pun: prac tic nu e nici un integrat: numai tranzistoare(pe receptor cred ca e ceva ce stabilizeaza tensiunea sau asa ceva)
Aceasta postare a fost editata de wingless: 02 December 2004 - 03:22 PM
#163
Postat 02 December 2004 - 04:07 PM
Asa ca o sa-ti zic ceva ce am intalnit la modulele cu care am lucrat eu (ceva imi zice ca mai toate sunt asemanatoare)
1: RECEPTOARELE NU DAU COMPONENTA DC!!! frecventza minima a semnalului de la iesire este de vreo 50Hz
de aceea de fiecare data inainte sa se transmita o informatie transmit vreo 3-5 octeti $AA pentru a avea niste trenuri de 101010101010 suficient de lungi pentru echilibrarea potentialelor pe acolo. Chestia asta a trebuit facuta la toate modulele mele
2. cateodat se mai pierde cate un bit asa de ieftine ce sunt (la modulele AM) motiv pt care trebuie sa faci un algoritm de protectie contra eroroilor. In prima mea telecomanda transmiteam de 3 oari celasi lucru sidoar daca cele trei siruri erau identice info se ducea spre servouri (metoda asta nu e f eficienta pt ca e f redundanta comenzile se actualizau destuk de greu de vrei 5 ori pe sec)
La noua telecomanda am bagat CRC pe 16 biti cu polinomul generator X15+X13+1 si merge super!!!
Sper sa te fi ajutat cu ceva ce am zis eu
Succes
#164
Postat 02 December 2004 - 05:43 PM
#165
Postat 02 December 2004 - 10:10 PM
Multumesc de info, Oricum frecventa minima trebuie sa fie mult mai mare de 50Hz ma gandesc ca sa poata sa transmita 3kBps cum scrie acolo. Ma mira totusi ce ziceti voi pt ca pe receptor singurul integrat care il vad e un LM 356 cu 8 pini care e un AO ( http://cache.nationa...ds/LM/LM158.pdf ). Mai are 2 tranzistoare multe rezistente condensatoare(SMD) si 2 bobine. Pare prea "prost" :wub: Si emitatorul are un tranzistor SMD niste bobine rezist/condensat si o capsula de metal care babnuiesc ca e un tranzistor planar care lucreaza la 433Mhz
Totusi o sa verific daca da semnal oscilant(pun pe intrarea de microfon si masor prin placa de sunet..banuiesc ca nu depaseste 20 kHz)
Algoritm de verificare a erorilor o sa fac: o sa folosesc paritate la 16 bytes transmit inca 2 in care fiecare bit e 1 daca byteul corespunzator are numar par de 1 si invers. Pai si tot o sa trimit de mai multe ori: daca sa altereaza informatia in care e codul de verificare?(paritate la mine, crc la tine) o sa zica ca packetul nu e bun cand defapt el e bun.
Nedumerit sunt la capitolul sincronizare dar intai sa vad cum functioneaza odulele dupa imi pun problema sincronizarii
Inca imi este neclara chestia asta cu receptorul: deci practic eu daca tin la emitator intrarea in 1 logic pe receptor am pulsuri de 1 despartite de 0 uri? Oricum fac teste sa vad daca pulseaza semnalul in weekend
Multumesc mult pt feedback MrSpace si va tin pe toti la curent ... daca se dovedesc balarii modulele astea macar sa stiti sa nu luati si voi :D
Pana atunci(weekend), Alex Baccilu multam de link, ma uit pe discutie
___Andrei
#166
Postat 03 December 2004 - 09:15 AM
#167
Postat 03 December 2004 - 10:44 AM
Transmitatoarele au un singur oscilator cu un rezonator ceramic (macar stabile sa fie daca puternice nu-s).
Iar receptorul f probabil este unu cu super-reactie (cel mai amarat tip din cate stiu, acum 40-50 ani erau puse la mare pretz :wub: )
De obicei receptoarele FM sunt superheterodine si unele AM dar tot "FM rulesss" :D
Cat despre sincronizate.. te iau la bataie.. tu acolo nu folosesti UART (Universal Asincronous Receiver and Transmiter)??? doar nu folosesti modulatii de faza in quadratura si in opozitie ca debilii de la mine de la facultate... Ia te rog sa te linistesti. Tu nu trebuie decat sa transmiti si sa recetionezi cu aceeasi viteza!!!
Sau daca te manca ca pe zabilica poti sa implementezi comunicatia seriala pe portul paralel ca cel serial sta si mucegaieste (si sa nu-mi zici ca ai mousul pe el ca nu ai bani de unu pe PS/2 sau USB)! chiar nu ai avea ce face!!! (hai ca am GLUMIT nitel, dar efectiv mai bine e sa folosesti portul serial ala cu 9 sau 25 pini)
Aceasta postare a fost editata de MrSpace: 03 December 2004 - 10:50 AM
#168
Postat 03 December 2004 - 02:48 PM
La UART nu m-am gandit pana acum:) Adica stiu ca e pe chip si e bun la ceva dar nu am citit niciodata partea aia a datasheet-ului:D ma pun acum pe citit poate ma scapa de niste lucru cu intreruperi bla bla. Multumesc mult de idee. Eu vroiam sa fac eu astfel incat cand primeste 1 sa se genereze o intrerupere sa vada daca e inceput de pachet la la la, .... complicat rau http://www.rhcforum....tyle_emoticons/default/smile.gif
In discutia aia (link-ul de la alex) nu am gasit nimic care sa ma lamureasca..fac teste maine..
___Andrei
#169
Postat 03 December 2004 - 04:24 PM
Odata de mult de mult cand am legat eu prima oara un montaj cu un uC la PC am folosit un motorola P6 fara UART pe el si cum am facut:
am folosit doi pini genral I/O unu iesire altul intrare
la recetie era baiul mai mare
treaba mergea asa:
1. pt inceput se eshationiza cu viteza f f mare (de vreo 10 ori mai mare ca cea de transmisie, cel putin, evident faceam poling) si daca nu se transmitea nimic trebuai sa fie valoarea 1
2 imediat ce se detecta valoarea 0 se astepta juma de perioada de bit si se citea iar valoare (sa fi unvea in mijlocul bitului de start) daca tot 0 era consderam ca am detectat un bit de start
3 de acum astept si citesc din perioada in perioada (nu jumatati, si ma refer la perioada de bit) opt valori erau stocate intr-un registru si era totul ok daca al 9-lea (ignorand bitul de start era un 1 (bitul de stop))
dupa care incepea iar o esantionare de aceea super rapida pt detectarea unui nou bit de start de la un nou octet
evident foloseam poling aici si bietul uC de abia mai apuca sa faca niste masuratori ca astea trebuia sa ajunga in PC si sa fie conditionate de el
Daca ai fi fost atent ai fi vazut ca tehnica asta am folosito si pe prima telecomanda, am si comentarii detul de clare acolo zic eu.
Spor la treaba
#170
Postat 04 December 2004 - 10:20 PM
Pana una alta poze: multumiri lui alex_baccilu pt timp aparat de foto si sfaturi :angry:
(pozele sunt usor intunecate, daca se aduna plangeri o pun niste sageti sa scriu asta e tranzistor asta e integrat etc)
Imagini atasate
#171
Postat 04 December 2004 - 10:22 PM
O alta poza, cealalta fata(ala ce credeti ca e: un tranzistor planar pt 433Mhz sau vreun integrat ecranat?)
Imagini atasate
#175
Postat 04 December 2004 - 11:30 PM
tima zis sa trimiti multi de 10101010101010101.... cu viteza maxima sa se echilibreze potentialelel
Cati ani ai tu?! apropo
#176
Postat 05 December 2004 - 10:05 AM
In rest o sa fac cum spui tu MrSapce o sa trimit niste AAh. NU m-am uitat pana acum dar vad ca e un condensator inainte de intrarea in AO
Multam pentru sfaturi crek pana acum le aruincam :D
___Andrei
Aceasta postare a fost editata de wingless: 05 December 2004 - 10:07 AM
#177
Postat 05 December 2004 - 06:14 PM
Ca nu-mi sta in caracter sa-mi arat muschii de la cerebel cu astia mici ca tine http://www.rhcforum....tyle_emoticons/default/biggrin.gif (decat daca ma suparati :D )
Asa ca daca o sa mai ai belele scrie aici ca eu stau pe faza. ok!? ;)
#178
Postat 07 December 2004 - 03:20 PM
___Andrei
P.S Am trimis si 0xAA inainte..vreo 2000 de bytes cu viteza maxima
Aceasta postare a fost editata de wingless: 07 December 2004 - 03:23 PM
#179
Postat 09 December 2004 - 02:57 PM
Glumesc :lol: ... mai scriu din cand si cand cate una din putul gandirii ca sa se vada ca va urmaresc cu interes.
Bine ca nu mi-am luat futaba aia de 600 euroi, abia astept radiocomanda asta!
#180
Postat 02 January 2005 - 08:26 PM
Nu am mai scris de multicel la subiectul asta, intre timp m-am documentat despre modul de functionare, am facut teste, m-am convins ca transmit pulsuri(boala se cheama incapatanare, se vindeca greu :| ) Printre altele am facut un program folosind APIul OpenGL care este in principiu un osciloscop digital: citeste un pin al portului LPT la intervale reglabile(minim 10us) si are capacitate de hold, ca sa poti sa te holbezi bine la grafic(pentru ca da, deseneaza si un grafic :D) daca e cineva interesat, imi ziceti si il fac public pt download. Asta m-a convins ca receptorul ala pulseaza in draci :| In fine acum ma specializez pe portul serial, am facut deja un program care (cu ajutorul unei mufe loopback) trimite pe monitor un fisier de pe harddisk la 2400bps(puteam sa folosesc si portul paralel dar din moment ce timingul il faceam folosind solutii software puteau aparea erori suplimentare - asa o sa folosesc UARTul din calculator). Urmeaza sa mai treaca cateva zile sa cumpar niste convertoare RS232<->TTL (nu-s pe stoc) ca sa leg modulele la doua calculatoare si sa masor cat % din date sunt transmise corect(si evident cat% eronat) Pentru asta pot sa pun programul sa se astepte la un anume fisier sau, asa cum vreau sa fac, sa implementez deja modelul de comunicatie pe pachete pe care o sa-l folosesc si la legatura radiocda -> heli.
Momentan lucrez pe partea teoretica de securitate a datelor. M-am gandit sa folosesc un CRC pe 16 biti. Acesta o sa imi permita sa detectez erori intr-un pachet de date si sa il ignor. Exista algoritmi mai buni care iti si corecteaza datele dar acestia ori implica trimiterea informatiei de aproape 2 ori(ex Hamming) ori sunt foarte complecsi pentru microcontroller(cazul algoritmului foosit la transmiterea datelor intre robotul trimis pe Marte de NASA Mars PathFinder) Imi poate cineva recomanda algoritmi mai potriviti in aceasta situatie ca un CRC pe 16 biti(evident corectitudinea informatiei e cruciala(altfel foloseam paritate de ex) dar conteaza si complexitatea algoritmului).
Inca ceva: viteza fiind 300Bytes/s la 20B pe pachet(care ar insemna update general al comenzilor) rezula 15Hz frecventa de actualizare..si daca se mai pierd si vreo 2 pachete..Asta e partea urata, mai ales ca am inteles ca PPM de exemplu updateaza toate comenzile cu 50Hz Credeti ca e o problema 15Hz?
Inca o data numai bine in anul 2005(cum se zicea pe aici sa pastrati numarul aterizarilor>=nr decolarilor:)) )
/later edit: reciteam posturi mai vechi de pe thread, si am vazut ce zice MrSpace si m-am cam lamurit(daca totusi va vin in cap algoritmi mai buni sunt deschis). Multumesc inca o data MrSpace, grozave informatii, m-au ajutat mult pana acum :D Am citit cateva tutoriale si se pare ca se implementeaza destul de usor CRC cu tabele, si e usor si pt microcontroller(ca asta ma int) Un tutorial care mi s-a parut cel mai aproape de complet(daca nu complet - explica inclusiv alegerea polinoamelor impartitoare) pentru cine e interesat de subiect: http://www.geocities.com/SiliconValley/Pin...es/8659/crc.htm Superb tutorial merita citit.
___Andrei
Aceasta postare a fost editata de wingless: 02 January 2005 - 09:22 PM