Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

PIC 16F877A PIC Basic PRO i RS232 Komunikacija

[es] :: Elektronika :: Mikrokontroleri :: PIC 16F877A PIC Basic PRO i RS232 Komunikacija

[ Pregleda: 2299 | Odgovora: 9 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Robinzon Kruso

Član broj: 41475
Poruke: 191
*.adsl2.static.versatel.nl.



Profil

icon PIC 16F877A PIC Basic PRO i RS232 Komunikacija04.03.2012. u 13:04 - pre 147 meseci
Postovani Profesionalci, Amater, Ljubitelji i svi ostali,

Evo kratkog opisa problema koji pokusavam da resim.

Radi si o Mikrokontroleru PIC16F877A i PIC Basic PRO i VB 6. Projekat je Voltmetar - Komparator. Hardver radi i na terminalu dobijam napone medjuti problem je sto jedino znam i mogu da napone izracunam (ne precisno) u samom mikrokontroleru i da onda uz pomoc HSEROUT rezultat dobijem u Visual Basicu 6. Sve to radi ali je ideja sledeca...

Radi se o desetobitnoj A/D konverziji.

Da u samom mikrokontroleru dobijem napone recimo U1= x i U2=y da onda preko RS232 x i y (a ne obe promenjive istovremeno kako sad program radi) prenesem jednu po jednu vrednost u Napon1 i Napon2 respektivno u VB6 i da onda odredjenim kolicnikom dobijem realni napon sa minimalnim faktorom greske.

Napone u samom mikrokontroleru imam recimo x=200 i y=100 prikazano u terminal preko HSEROUT. Moje pitanje je kako uz pomoc PIC Basica PRO da prvo posaljem vrednost x u promenjivoj Napon1 pa onda y u pr. Napon2.

Mozda cu da budem jasniji ako vidite sta kod trenutno radi.

Code:


DEFINE LOADER_USED 1         'Enable TX and RX with baud rate of 2400
DEFINE HSER_CLROERR 1        'Clear overflow automatically

PAUSE 100
         NAPON11 VAR byte
         NAPON12 VAR BYTE
         NAPON21 VAR BYTE
         NAPON22 VAR BYTE
    

    AD_Rez2 var word    ' Rezultat AD konverzije
        AD_Rez1 var word 
        TRISA = %11111111    ' Port A je ulazni
        TRISC = %00000000
        ADCON1 = %10000010    ' Port A je u analognom modu, 0 i 5V su                 
 
Main:    ADCIN 2, AD_Rez2       ' Izvrsi konverziju na RA2 i 16 bita
                             ' rezultata smesti u AD_Rez.
        ADCIN 1, AD_Rez1
       
        

NAPON11 = (AD_Rez2)/17     ' Delim rezultat sa 17 kako bih priblizno dobio realnu vrednost
NAPON12 = (AD_Rez2)//17
NAPON21 = (AD_Rez1)/17     ' Delim ostatak sa 17 kako bih dobio decimalnu vrednost
NAPON22 = (AD_Rez1)//17
NAPON12=NAPON12/10         ' Delim decimalnu vrednost kako bih dobio jednu stabilnu civru posle decimale..
NAPON22=NAPON22/10


GOSUB PRIKAZI4
Goto MaiN          
END



PRIKAZI4
HSEROUT["U1=",DEC NAPON11,".",DEC NAPON12," V  U2=",DEC NAPON21,".",DEC NAPON22," V",13] 
Pause 100
RETURN



kao sto vidite u podprogramu PRIKAZI4 saljem oba napona i prikazujem ih u jednom Text1.Text u VB6. Kako da to odradim da promenjive AD_Rez2 i AD_Rez3 posljam u promenjive Napon1 i Napon2 u VB6 a onda je lako.

Hvala unapred

R
 
Odgovor na temu

ZAS011
Uzgajivač šargarepe izakuće
Vanuatu

Član broj: 288510
Poruke: 4543

ICQ: 8713400
Sajt: www.justfuckinggoogleit.c..


+530 Profil

icon Re: PIC 16F877A PIC Basic PRO i RS232 Komunikacija04.03.2012. u 14:09 - pre 147 meseci
Sto ti ne bi poslao sirove podatke u PC? Tu odradi matematiku kakvu hoces.

npr.
Code:

' uvedes ove 2 dodatne promenljive
Napon1 var Word
Napon2 var Word

Napon1 = AD_Rez1 & $3FF  ' Maskiranje donjih 10 bitova
Napon2 = AD_Rez2 & $3FF  ' Maskiranje donjih 10 bitova

HSEROUT [Napon1, Napon2]  ' Slanje "sirovih" podataka u decimalnom obliku


A mogao bi da probas i sledece:

Code:

HSEROUT [Dec Napon1, Dec Napon2]  ' Slanje "sirovih" podataka u binarnom obliku (2 x 16 bit-a)


Ostatak odradis u VB aplikaciji
--
Make no mistake between my personality and my attitude.
My personality is who I am.
My attitude depends on who you are.
 
Odgovor na temu

Robinzon Kruso

Član broj: 41475
Poruke: 191
*.adsl2.static.versatel.nl.



Profil

icon Re: PIC 16F877A PIC Basic PRO i RS232 Komunikacija04.03.2012. u 22:49 - pre 147 meseci
Sve mi je to jasno i to kao sto vidis program radi naravno sa matematikom u PIC-u ali iz razloga zato sto neumem da prakticno prenesem vrednosti u VB.

Ja sada u VB imam sledece...

Code:

Private Sub Form_Load()
MSComm1.PortOpen = True
MSComm1.RThreshold = 16
End Sub

Private Sub MSComm1_OnComm()
If (MSComm1.CommEvent = comEvReceive) Then
Text1.Text = MSComm1.Input
End If
End Sub


da bih prikazao vrednosti Napon1 i Napon2. Ali kako da Napon1 i Napon2 prihvatim kao dve posebne promenjive u VB. To jos prakticno ne mogu da resim.

 
Odgovor na temu

ZAS011
Uzgajivač šargarepe izakuće
Vanuatu

Član broj: 288510
Poruke: 4543

ICQ: 8713400
Sajt: www.justfuckinggoogleit.c..


+530 Profil

icon Re: PIC 16F877A PIC Basic PRO i RS232 Komunikacija04.03.2012. u 22:58 - pre 147 meseci
U VB se razumem k'o Marica
'El to radi na nekom uC-u?
--
Make no mistake between my personality and my attitude.
My personality is who I am.
My attitude depends on who you are.
 
Odgovor na temu

ha_23

Član broj: 282489
Poruke: 219
94.100.108.*



+4 Profil

icon Re: PIC 16F877A PIC Basic PRO i RS232 Komunikacija05.03.2012. u 18:03 - pre 147 meseci
Posali string vako HSEROUT [Dec Napon1, "," , Dec Napon2,13]
String ce bude na primer : 100,200
Pa posle od strana na VB odradi funkciju Split.
Link:Split VB.6
Link:Split VB.NET
Link:Split C#.NET
 
Odgovor na temu

steve585
Stevan Stanić
Project Manager
Zagreb

Član broj: 131815
Poruke: 281
*.adsl.net.t-com.hr.



+1 Profil

icon Re: PIC 16F877A PIC Basic PRO i RS232 Komunikacija17.03.2012. u 20:08 - pre 147 meseci
Poz

Što možeš poslati u VB? Kako izgledaju te vrijednosti u VB-u? Daj primjer
Što je potrebno u VB-u napraviti sa podacima koje dođu u VB?
Kako treba izgledati konačni rezultat?

Daj molim te odgovore na ova pitanja sa konkretnim vrijednostima i probati ću ti pomoći da dobiješ ono što želiš.
steve585
 
Odgovor na temu

Robinzon Kruso

Član broj: 41475
Poruke: 191
*.kpn.net.



Profil

icon Re: PIC 16F877A PIC Basic PRO i RS232 Komunikacija19.03.2012. u 11:51 - pre 147 meseci
Hvala Steve585

Ovako, problem sam resio tako sto sam dva napona (sirove ASCII) poslao na RS232 i kao takve primio ih u VB6. Recimo poslao saem karaktere FY i onda u VB6 pretvorio ASCII u broj. Posto se radio od desetobitnoj AD konverziji onda imam vrednost od 0 za 0V i 1024 za max. u mom slucaju 50V. Onda samo treba da decimalnu vrednost podelim sa odredjenim faktorom i onda dobijem merenu vrednost koju naravno proverama uz pomoc klasicnog voltmetra... Znaci kada sam dobio vrednosti u VB6 (ASCII) onda sam split funkcijom (na poslu sam trenutno pa se ne secam tacno koja funkcija) ali ona izdvaja samo levi karakter i druga izdvaja samo desni karakter tako sam dobio Napon1=funkcijalevikarakter(ASCII) i Napon2=funkcijazadnjikarakter(ASCII) e onda sa tim promenjivima radim dalje...

Ako vec znas ili imas bolji predlog naravno uvej je dobrodosao...

Inace problem koji sada imam je stabilnosto napona u VB6. Merim napone 5V i 12V (5.22 i 11.55). Znaci decimalne vrednosti napona mi nisu stabilne... trenutno ispitjume da li se radi o hardveru ili moram to u softveru nekako da resim... naravno svaki predlog dobrodosao....

Jos jednom hvala...

 
Odgovor na temu

goran_68

Član broj: 89012
Poruke: 932
*.dynamic.isp.telekom.rs.



+81 Profil

icon Re: PIC 16F877A PIC Basic PRO i RS232 Komunikacija19.03.2012. u 12:54 - pre 147 meseci
Najbolje je da na PC šalješ srednje vrednosti oba napona (sabereš N vrednosti pa dobijeni rezultat podeliš sa N).
gorankg
 
Odgovor na temu

Robinzon Kruso

Član broj: 41475
Poruke: 191
*.kpn.net.



Profil

icon Re: PIC 16F877A PIC Basic PRO i RS232 Komunikacija19.03.2012. u 13:23 - pre 147 meseci
a kolika da je vrednost N otprilike... ako je N veca vrednost onda mogu da imam kasnjenje... a to nije bas preporucljivo... posto mereni napon moze da se menja brso...

hvala unapred
 
Odgovor na temu

Robinzon Kruso

Član broj: 41475
Poruke: 191
*.kpn.net.



Profil

icon Re: PIC 16F877A PIC Basic PRO i RS232 Komunikacija20.03.2012. u 16:18 - pre 147 meseci
Uzeo sam da mi je N=5 i postavio sam veci elektrolit na 5V tako da sam dobio relatinvo stabilne vrednosti.... a inace funkcije za izdvajanje vrednosti su left(NaponA) i right(naponB) u VB6. Ako je dobijeni napon u VB6 recimo XY onda je left(NaponA)=X i right(NaponB)=Y pa onda us pomoc funkcije Napon1=ASC(NaponA) i Napon2=ASC(NaponB) dobijamo decimalne vrednosti koje dalje koristimo u programu.

 
Odgovor na temu

[es] :: Elektronika :: Mikrokontroleri :: PIC 16F877A PIC Basic PRO i RS232 Komunikacija

[ Pregleda: 2299 | Odgovora: 9 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.