Sari la conținut
ELFORUM - Forumul electronistilor

AC voltage reader Bascom


Cilibiu

Postări Recomandate

Salut @Cilibiu,

 

Multe moase si buricul netaiat ...

 

Acum 4 ore, Cilibiu a spus:

aveam o valoare afisata aletaor intre 860mA si 1120mA.

Absolut normal. Inainte de zgomot, metoda ta de masura are probleme principiale. Zici ca masori de 150 de ori la interval de 10us. Pai asta acopera doar o portiune din sinus si e foarte normal sa ai valori aleatoare pentru ca nu ai de unde sa stii relatia de faza dintre sinusoida de 50Hz si momentul esantionarii. Daca ai posta un buffer care sa contina cel putin 2 perioade complete ale sinusului de 50Hz, s-ar putea vedea si daca ai intr-adevar zgomot pe semnal. Pentru 2 perioade complete ar trebui sa masori de 40 de ori la interval de 1ms si sa tii in memorie toate cele 40 de esantioane, ca sa faci calcule cu ele. Masurand atat de putin, nu ai informatie pentru un calcul suficient de exact. Rezultatul conversiei AD depinde de punctul in care ai "prins" sinusul. Si asta poate sa varieze deoarece declansarea conversiei este complet necorelata cu evolutia sinusului.

Masurarea valorilor nu se face prin "alegerea" esantioanelor, ci prin acumularea catorva perioade complete, apoi aplicarea calculelor pe semnalul memorat. Asta e cel putin una dintre diferentele intre programare logica si procesare de semnal. Ti-am aratat in graficul excel cum se calculeaza valoarea RMS avand doar esantioanele si a iesit taman formula cu 0.707. Nu am "ales" niciun maxim, minim sau mai stiu eu ce. Nu este necesar, daca ai capturat suficienta informatie.

 

Acum 6 ore, Cilibiu a spus:

daca te ajuta si vrei sa le scri de mana iti fac poza la display

:rade: Cred ca e o neintelegere. Mie imi este indiferent daca proiectul tau merge sau nu. Tu esti cel care a solicitat ajutor si am incercat sa intervin, dar se pare ca vorbim in pungi diferite.

 

L.E.

Acum 16 minute, djvas a spus:

trebuie  sa sincronizezi Adc-ul cu Sinusoida

Nuu, nici macar nu trebuie sincronizat. Daca va uitati cu atentie in exemplul excel, am pus acolo o faza aleatoare de 23 de grade ca sa arat ca nici macar nu trebuie sincronizat, atata timp cat se memoreaza suficiente perioade ale sinusului masurat. Valoarea RMS calculata este independenta de defazaj, daca buferul contine un numar intreg de sinusoide masurate. Si asta e foarte usor de realizat, avand in vedere ca frecventa masurata e fixa.

 

@Cilibiu

Daca postezi totusi minim 40 de esantioane capturate la interval de 1ms, incerc sa iti arat cum se calculeaza. Ca sa nu le scrii de mana, scoate-le la seriala si captureaza-le cu un terminal. Nici macar nu trebuie sa le convertesti in volti. Posteaza direct rezultatele conversiei ADC-ului.

 

 

Editat de cirip
Link spre comentariu
  • Răspunsuri 56
  • Creat
  • Ultimul Răspuns

Top autori în acest subiect

  • Cilibiu

    27

  • cirip

    9

  • nico_2010

    7

  • djvas

    4

Top autori în acest subiect

Imagini postate

 

Salut  @Cilibiu,

 

Mai fac o incercare sa iti arat ca metoda de masura corecta este cu buffer, nu alegand boabe de fasole, care e mai mare si care nu ...

 

Ai atasat un excel care prelucreaza date extrase pe bune dintr-un ADC. Am facut exact ceea ce ti-am propus tie sa faci. Intamplarea a fost sa am pe masa un montaj care poate sa faca o captura cu ADCul. Sunt 3 capturi consecutive ale aceluiasi semnal aplicat la intrarea ADCului, ca sa demonstrez stabilitatea metodei.

  1.  Procesorul a umplut un buffer de 100 de esantioane cu o frecventa de esantionare de 1KHz
  2.  Dupa umplerea buferului, valorile au fost scoase la seriala procesorului, ca sa le pot pune in excel pentru procesare. Tot ce am facut in excel putea sa faca procesorul, dar nu mai era asa de clar ce se intampla. Coloana "text" contine datele trimise de procesor prin seriala.
  3.  Restul coloanelor din excel sunt procesari pentru a ajunge la formatul intreg cu semn al esantioanelor, extragerea componentei continue (dupa cum vezi semnalul nu era bine centrat in ADC, dar asta nu afecteaza precizia masuratorii).
  4.  ADCul a fost alimentat cu un semnal de 50Hz si 400mVvv (200mV amplitudine). Observa ca eroarea de calcul este in general mai mica de 0.5%, ceea ce este foarte rezonabil.
  5.  De notat ca valorile Amplitudine, RMS si media sunt stabile de la o captura la alta si independente de momentul in care se incepe conversia AD in raport cu sinusul de intrare. Pe scurt: faza nu conteaza in contextul asta.

cilibiu_capt1.thumb.PNG.4c5806fc7016d667cc5154fcf0e392bf.PNG

 

Ai atasata fila excel in caz ca vrei sa o analizezi.

elforum_cilibiu_sinus.zip

 

Spor!
Cirip

Editat de cirip
Link spre comentariu
La 07.05.2020 la 17:09, cirip a spus:

 

Absolut normal. Inainte de zgomot, metoda ta de masura are probleme principiale. Zici ca masori de 150 de ori la interval de 10us.

 

Cand am facut teste cu 20/40 esantioane aveam problema de variatia valori afisate.

Acum am ceva variati dar macar nu mai incarc atat de mult codul.

Cand am facut teste cu 40 esantioane aveam delay exact de 1ms.

O sa fac testul din nou cu 40 esantioane , pun codul si poza display-ului cu cele 40 de valori, nu am cum sa le trimit pe serial ca nu am nici o comunicatie seriala cu MCU, daca foloseam arduino ca soft si cod acolo e alta treaba, cand am dat in bascom start terminal  imi zice ca nu gaseste nimic pe serial.

Revin cu rezultatele.

Link spre comentariu

40 esantioane la 1ms delay.

Valorile sunt direct de pe pinul ADC fara sa fie convertite.

Poze cu detali mai jos.

 


$regfile = "m328pdef.dat"
$crystal = 16000000

$hwstack = 100
$swstack = 120
$framesize = 100

$lib "glcdra6963.lib"


Config Graphlcd = 240 * 128 , Dataport = Portd , Controlport = Portc , Cd = 1 , Rd = 3 , Wr = 4 , Ce = 0 , Reset = 2 , Fs = 6 , Mode = 8

Cursor Off Noblink
Cls

 

Dim X As Word
Dim X1 As Word
Dim X2 As Word
X = 0
X1 = 0


Dim Adcv As Word
Dim Y(50) As Word

Config Adc = Single , Prescaler = Auto , Reference = Avcc
Start Adc


 


Cls

Do
X = X + 1
Adcv = Getadc(5)

Y(x) = Adcv

If X > 40 Then
Goto Sublcd
Lcd Y(1)

End If

Waitms 1

Loop


Sublcd:
X = 0
X1 = 0
X2 = 1
Do
X = X + 1
X1 = X1 + 1
Locate X1 , X2
Lcd Y(x)

If X = 16 Then
X2 = 10
X1 = 0
End If

If X = 32 Then
X2 = 20
X1 = 0
End If


Loop Until X > 40

End

20200508_203030.jpg

20200508_203024.jpg

Editat de Cilibiu
Link spre comentariu

Salut @Cilibiu,

 

Nu e necesar sa pui codul.

 

Cam asa arata ceea ce ai pus pe ecranul tau LCD:

capt_cilibiu.thumb.PNG.3e21ae3f481a694a5201dcfff7d37aba.PNG

 

Ai probleme mari la conversia AD. De calcule exacte nici nu mai poate fi vorba, indiferent cum le faci.

  • In primul rand semnalul nu este monoton. Am incercuit punctele in care este violata monotonia.
  • Faptul ca ai pus in cod "Waitms 1" nu inseamna ca esantionezi la 1ms. Esantionezi la 1ms la care se adauga timpul necesar procesorului sa se plimbe prin bucla aia. Iar daca "plimbatul" are o durata variabila de la o rulare la alta, esantionarea este departe de ceea ce ar trebui sa fie.
  • De fapt frecventa de esantionare este clar mai mica de 1KHz (1ms). Daca semnalul de intrare e de 50Hz de la retea, atunci ar fi trebuit sa intre exact 2 perioade in 40 de esantioane (de fapt sunt 41). Ori la tine , in 40 de esantioane intra mai mult de 2 perioade, asa ca frecv de esantionare e departe de cea dorita.

 

Ai un osciloscop ca sa vezi daca semnalul chiar asa arata sau e doar o problema de conversie? Eu suspectez o problema de conversie. Pana nu obtii un sinus frumusel in buffer, orice incercare de a masura cu o oarecare precizie este sortita esecului.

 

Spor!

 

 

 

 

 

Editat de cirip
Link spre comentariu
La 07.05.2020 la 5:10, Cilibiu a spus:

Testele a fost facute pe becuri de 100w ca sonsumator.

Ups! Ala de pe oscilo nu e curent de bec. Si mai da niste tzacuri la sensibilitate, ca sa se intinda trasa pe 2/3 de ecran.

Mai e o problema. Daca semnalul are ciocurile alea, esantionarea la 1KHz s-ar putea sa-l supere pe taica Nyquist ptr ca ai componente de frecventa mare in spectru. Nu cumva consumatorul nu e bec, ci vreo sursa in comutatie fara PFC?

Oricum, inca sunt diferente intre ce e pe oscilo si ce captureaza ADCul.

 

 

Editat de cirip
Link spre comentariu
Acum 4 minute, Cilibiu a spus:

Acum am ca consumator un SMPS care alimenteaza o rezistenta.

Hahahahaha ... Pai veeezi? V-am prins, vrajitoarelor!

Chestia e ca daca una spui si alta faci, e greu sa fii ajutat.

 

Editat de cirip
Link spre comentariu
La 07.05.2020 la 13:56, Cilibiu a spus:

0.9A consuma o sursa care alimenteaza un rezistor, am folosit pe post de sarcina montajul sursa+rezistenta, voiam sa vad daca diferenta dintre un bec 0.5A si sursa se modifica liniar, daca puneam 2 becuri aveam 1A, eu am vrut sa vad daca afiseaza corect si valori intre 0.5A si 1A. Problema a fost aceasi si cu bec si cu montaj sursa+rezistenta.

Am zis asta acum cateva postari......

SMPS este cu PFC activ la 100khz si freq driverului de 90Khz sau invers.

Doc sursa mai jos

SMPS.pdf

Editat de Cilibiu
Link spre comentariu
Acum 9 minute, Cilibiu a spus:

Am zis asta acum cateva postari......

Oi fi zis, dar cine mai citeste in febra evenimentelor ...

Chestia e ca pana nu apare in buffer ceea ce vezi pe oscilo, nu poti trece mai departe.

De fapt poti, dar cu erori. :)

Editat de cirip
Link spre comentariu

Bun. Ce trebuie sa fac ca sa imi apara in buffer ce trebuie?

Unde gresesc sau cum ar trebui sa fac programul din MCU

Editat de Cilibiu
Link spre comentariu

Sa vedem testul cu bec, ptr ca forma de unda e mai dietetica. Dupa ce pui bec, posteaza poza pe oscilo si graficul excel al esantioanelor capturate, ca sa vedem daca se pupa.

Link spre comentariu

Scuze că intervin dar ceva nu e în ordine pe oscilograma aia - sau ai 60Hz la rețea (!) sau osciloscopul ăla are mult până la calibrare - ca timp/diviziune .  

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