Съдържание:
- Стъпка 1: Демонстрация
- Стъпка 2: Използвани ресурси
- Стъпка 3: Блокова диаграма
- Стъпка 4: Схема
- Стъпка 5: LM386 - Закрепване
- Стъпка 6: AmpOp - Диференциален (изваждащ)
- Стъпка 7: AmpOp - Инверторен суматор
- Стъпка 8: Maple Mini - Pinage
- Стъпка 9: Maple Mini - Pinning - a / D Използва се при заснемане
- Стъпка 10: Монтаж
- Стъпка 11: Графика с получените данни
- Стъпка 12: Изчисляване на RMS стойността
- Стъпка 13: Изходен код
- Стъпка 14: Файлове
Видео: Измерване на истинско RMS променливо напрежение: 14 стъпки
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:53
Днес ще използваме STM32 Maple Mini за отчитане на променлив ток. В нашия пример ще получим RMS стойността на електрическата мрежа. Това е много полезно за тези, които искат да наблюдават електрическата мрежа за Интернет на нещата. След това ще създадем приложение, използвайки изчислителната мощ на Maple Mini, ще приложим електронна схема, способна да позволи получаване на 127Vac сигнал, както и ще приложим изчислението на средноквадратичния (RMS) извадки.
Стъпка 1: Демонстрация
В нашето събрание днес имаме STM32, в допълнение към нашата аналогова схема, за да въведем 110. За да избегнете удари, изолирайте резистора, който влиза с 110.
Веригата е доста чувствителна. Влизам със 110, но го намалявам 168 пъти с помощта на делителя на напрежението и го поставям в операционния усилвател, който има няколко функции.
Имаме и някои допълнителни кондензатори за филтриране на източника. Ако вашият източник е с добро качество, не е нужно да ги използвате.
AD входът се изчислява чрез осцилоскопа, в който виждате синусоида, която не е 110 (но е добре оформена). Друго нещо е, че напрежението в нашата електрическа мрежа не е 110 (всъщност е 127 волта). Но тъй като преминаваме през стабилизатор, той ще се настрои на 115V.
Стойността, показана на серийния монитор, е това, което се изчислява в RMS, тоест тази, идентифицирана от Fluke Meter.
Стъпка 2: Използвани ресурси
• Джъмпери
• Maple Mini
• Protoboard
• Усилвател LM386
• Симетричен източник (+ 5V и -5V)
• 10k многооборотен тримпот (или потенциометър)
• Четири кондензатора от 100nF полиестер
• Три 10k резистора
• Четири 470k резистора
• Един 5k6 резистор
• Един ценерови диод 1n4728A
Стъпка 3: Блокова диаграма
Стъпка 4: Схема
Това е схема, която разработих въз основа на спецификациите, които според мен са най -добрите за това измерване, но има няколко други примера, които могат да бъдат намерени в интернет.
Стъпка 5: LM386 - Закрепване
LM386 има два усилвателя за кондициониране или усилване на сигнала.
Стъпка 6: AmpOp - Диференциален (изваждащ)
Стъпка 7: AmpOp - Инверторен суматор
Стъпка 8: Maple Mini - Pinage
Игли, маркирани на:
Червен >> 3V3 Толерантен
Зелен >> 5V Толерантен
Стъпка 9: Maple Mini - Pinning - a / D Използва се при заснемане
Тук подчертавам, че щифтът, който използвах, е D11, който (в номенклатурата на STMicroelectronics) е PA0.
Стъпка 10: Монтаж
За нашата верига ще ви е необходим симетричен източник, като този, който създадохме за този проект. В противен случай ще ви трябват два източника.
Стъпка 11: Графика с получените данни
Стъпка 12: Изчисляване на RMS стойността
Стъпка 13: Изходен код
Изходен код - Определения и константи
Първоначално определихме четенето на щифтове като D11, както и различните константи, използвани при изчисленията.
#define leituraTensao D11 // AD CH0 no pino PA0 // valor teórico divisor de tensão = 168.85714285714285714286 const float fatorDivisor = 168.40166345742404792461; // valor teórico do ganho de amplificação = 1.0 const float fatorAmplificador = 1.0; // Valor usado na multiplicação da leitura const float fatorMultiplicacao = fatorDivisor * fatorAmplificador; // Valor teórico da Tensão de alimentação Vcc = 3.3V const float Vcc = 3.3; // доблест теорико до отместване до усилвател = Vcc /2.0; const float offSet = 1.66; // fator teórico da razgovaão do AD = 3.3 / 4095.0 const float fatorAD = Vcc / 4095.0; const int amostras = 71429; // резултат em 1, 027 segundos para cada atualização // const int amostras = 35715; // Резултати от 0, 514 сегундос пара cada atualização
Изходен код - Глобални променливи
Сега дефинираме някои глобални променливи.
float Vrms = 0,0; // armazena o valor rms da tensãofloat Vmax = 0.0; // armazena o valor máximo detectado float Vmin = 10000.0; // armazena o dolor mínimo detectado float Vmed = 0.0; // armazena o valor médio entre Vmáx e Vmín
Изходен код - Настройка ()
Стартирайте серийния порт при 1Mbps. Нагласихме AD порта като вход и изчакахме 5 секунди, преди да започнем да събираме данни. Времето в режим на готовност не е задължително.
void setup () {Serial.begin (1000000); // inicia a porta serial em 1Mbps pinMode (leituraTensao, INPUT); // ajusta a porta do AD como entrada delay (5000); // aguarda 5s antes de iniciar a coleta. (по избор)}
Изходен код - Loop () - Стартира променливите за събиране на данни
В цикъла имаме променливата за итерация. Тук също съхраняваме показанията на AD в 0.0 и рестартираме променливата VRMS също в 0.0.
void loop () {int i = 0; // variável para iteração float leitura = 0.0; // армазена като leituras do AD Vrms = 0.0; // reinicia a variável Vrms
Изходен код - улавя и изпълнява отделните изчисления за всяка извадка
На този етап, ако i е по -малък от пробата, започваме цикъл на вземане на проби, докато i достигне броя на пробите. Изпълняваме analogRead, за да прочетем аналоговия порт и да изчислим сумата от квадратите на напреженията за четене. Накрая увеличаваме итератора.
while (i <amostras) {// inicia um ciclo de amostragem até que i alcance o número de amostras leitura = analogRead (leituraTensao); // lê a porta analógica //Serial.println(leitura); // Descomente se quiser ver o sinal bruto do AD Vrms = Vrms + pow (((leitura * fatorAD) - offSet), 2.0); // изчисляваме a soma dos quadrados das tensões lidas i ++; // увеличаване на iterador}
Изходен код - Общи изчисления на пробите и идентифициране на максимални, минимални и средни стойности
Ние прилагаме факта за умножение, за да определим действителната стойност на напреженията. Ние откриваме дали стойността е максимална или минимална и изчисляваме средната стойност на текущите максимални и минимални стойности.
// Aplicando fator de multiplicação para determinar o valor real das tensões Vrms = (sqrt (Vrms /amostras)) * fatorMultiplicacao; // откриваме, че сме смели и смели, ако (Vrms> Vmax) {Vmax = Vrms; } // detecta se é um valor mínimo if (Vrms <Vmin) {Vmin = Vrms; } // изчислява a média dos valores máximo e mínimo atuais Vmed = (Vmax + Vmin) /2.0;
Изходен код - Опции за изход
Имаме три възможности за "начертаване" на изходната стойност. Имаме изход, форматиран към серийния плотер на Arduino IDE, като CSV или Jason.
// формуляри за плотер сериен IDE Arduino Serial.print (Vrms, 3); Serial.print (","); Serial.print (Vmax, 3); Serial.print (","); Serial.print (Vmin, 3); Serial.print (","); Serial.println (Vmed, 3); /* // форматът е създаден като json Serial.print ("{" instante (ms) ":"); Serial.print (millis ()); Serial.print (","); Serial.print ("\" Vrms (V) ":"); Serial.print (Vrms, 3); Serial.print (","); Serial.print ("\" Vmax (V) ":"); Serial.print (Vmax, 3); Serial.print (","); Serial.print ("\" Vmin (V) ":"); Serial.print (Vmin, 3); Serial.print (","); Serial.print ("\" Vmed (V) ":"); Serial.print (Vmed, 3); Serial.println ("}"); * / /* // информация за CSV Serial.print (millis ()); Serial.print (","); Serial.print (Vrms, 3); Serial.print (","); Serial.print (Vmax, 3); Serial.print (","); Serial.print (Vmin, 3); Serial.print (","); Serial.println (Vmed, 3); */}
Стъпка 14: Файлове
Изтеглете файловете:
АЗ НЕ
Препоръчано:
Захранване с променливо напрежение USB: 7 стъпки (със снимки)
Захранване с променливо напрежение чрез USB: От известно време имам идея за променливо захранване с USB захранване. Докато го проектирах, го направих малко по -универсален, позволявайки не само USB вход, но всичко от 3 VDC до 8 VDC чрез USB щепсел или чрез бананови щекери. Изходът използва t
Променливо евтино захранване с високо напрежение: 3 стъпки
Променливо евтино захранване с високо напрежение: Изградете регулирано захранване с високо напрежение за зареждане на кондензатор или друго приложение с високо напрежение. Този проект може да струва по-малко от $ 15 и ще можете да получите над 1000V и да можете да регулирате изхода от 0-1000V+. Тази инструкция
Безконтактна електрическа схема на детектора за променливо напрежение: 6 стъпки
Безконтактна схема на детектора за променливо напрежение: Схемата за идентификатор на променливо напрежение е първична верига, базирана изцяло на NPN транзистори като BC747, BC548. Веригата зависи от 3 различни етапа. След това знакът за крехкост бе придаден плътен и Тази верига може да кара Drove точно като камбаната. Тук аз
Захранване „направи си сам“с помощта на LM317 - Lm 317 Променливо изходно напрежение: 12 стъпки
Захранване „направи си сам“с помощта на LM317 | Lm 317 Изход с променливо напрежение: Днес ще се научим как да направим малък захранващ блок за вашите малки проекти. LM317 ще бъде добрият избор за захранване с нисък ток. Lm317 осигурява променливо изходно напрежение, което зависи от стойността на съпротивлението, което е свързано wi
Линеен регулатор на променливо напрежение 1-20 V: 4 стъпки
Линеен регулатор на променливото напрежение 1-20 V: Линейният регулатор на напрежението поддържа постоянно напрежение на изхода, ако входното напрежение е по-голямо от изходното, като същевременно разсейва разликата в напрежението по време на токовите ватове мощност като топлина. Можете дори да направите грубо напрежение регулатор, използващ