синус на прямоугольник

gena321
Offline
Зарегистрирован: 19.01.2019
Здравствуйте
Эта программа - измеритель переменного напряжения, пытаюсь добавить преобразователь входного  синусоидального напряжения в прямоугольник.
Вот как начал, но это не работает. 
 
#include "EmonLib.h"
#include <LiquidCrystal.h>
LiquidCrystal lcd(PA0, PA1, PA2, PA3, PA4, PA5);
EnergyMonitor emon1;
float  cur, acur[50], sumc;

int (Irms);
/////////////////
int val;
////////////////
void setup()
{
  ///////////////////
  val =  analogRead(PA7);
  //////////////////////
  pinMode(PB14, OUTPUT);
  //pinMode(PA7, INPUT);
  pinMode(PA7, INPUT_ANALOG);
  lcd.begin(16, 2);

  emon1.current(PA7, 2.8);

}

void loop()
{
  emon1.calcVI(20, 2);
  float Irms = emon1.Irms;

  lcd.setCursor(0, 1);
  lcd.print("U=");
  lcd.print(Irms);
  //delay (500);
  digitalWrite(PB14,  val);
}

 

 

asam
asam аватар
Offline
Зарегистрирован: 12.12.2018

А в чем глубокий смысл преобразования синуса в прямогульник? И каким образом оно должно происходить?

gena321
Offline
Зарегистрирован: 19.01.2019

например для счетчика частоты,  digitalWrite(PB14,  val); может быть 0 или 1 а это получается прямоугольник 

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

читай аналоговый вход методом digitalRead() и всё преобразуется в цифру отоматисски. 

gena321
Offline
Зарегистрирован: 19.01.2019
  ///////////////////
 // val =  analogRead(PA7);
  val =  digitalRead(PA7);
  //////////////////////

не переключается, постоянно 1

 

gena321
Offline
Зарегистрирован: 19.01.2019

1

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

схему давай. 

nik182
Онлайн
Зарегистрирован: 04.05.2015

Об оборудовании можно узнать? Какая плата? Как напряжение из +-220 в 0 +3 вольта преобразуется? Очень рекомендую с pdf файлом ознакомится отсюда https://create.arduino.cc/projecthub/Mr-Joe/smart-energy-monitor-based-on-arduino-05f042

 

gena321
Offline
Зарегистрирован: 19.01.2019

 

вот схема, вместо arduino stm32f103, вход 3 V

 

gena321
Offline
Зарегистрирован: 19.01.2019

nik182

Вот лучше

https://community.openenergymonitor.org/t/open-energy-monitor/441

В никаком open energy monitor не встретил чтобы преобразование делали программой

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

Нафих этот бред, у абдурин есть встроеный компаратор, вот его мучай.

gena321
Offline
Зарегистрирован: 19.01.2019

Сделал так, но прямоугольники немного шатаются

int currentValue;
int previousValue;
int analogPin = PA7;
int LED =  PB14;

void setup() {
  pinMode(PA7, INPUT_ANALOG);
  pinMode(PB14, OUTPUT);
}

void loop() {
  previousValue = currentValue;
  currentValue = analogRead(analogPin);
  //if (previousValue != currentValue)
  if (previousValue > currentValue)
  {
    digitalWrite(PB14, HIGH);
     digitalWrite(PB14,1);
    //LED = 1;
  }
  else
  {
    //digitalWrite(PB14, LOW);
     digitalWrite(PB14, 0);
    //LED = 0;
  }
}

 

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

brokly пишет:

Нафих этот бред, у абдурин есть встроеный компаратор, вот его мучай.

вот вот