Переменное напряжение

denysKo_O
Offline
Зарегистрирован: 07.01.2017

Волшебник пишет:

Я не понимаю, а резисторы 15к и 200? Куда и как? На листе бумаги нарисуйте, не обязательно в редакторах схем, телефоном сфотайте и покажите

Апдейт. на рисунке ошибка, там не 150к
а 15кОМ

Волшебник
Offline
Зарегистрирован: 22.12.2016

Надо так:

denysKo_O
Offline
Зарегистрирован: 07.01.2017

Волшебник пишет:

Надо так:

 

понижать на входе?
понял

на этом отпике нашел алгоритм дальнейшего расчета
http://arduino.ru/forum/apparatnye-voprosy/voltmer-220v

а именно
 

1 int mean;  // здесь будем вычислять среднее арифметическое
2 long oldTime;  // с помощью этой переменной будем определять момент очередного обращения к АЦП

В loop() пишем:

1 if(millis()-oldTime>23) { // наступило время опрашивать АЦП?
2   oldTime = millis();     // приготовимся к следующему опросу
3   mean = mean*9/10+analogRead(PIN); // а теперь собственно опрос и подсчет среднего арифметического последних 10 результатов
4 }

 

denysKo_O
Offline
Зарегистрирован: 07.01.2017
097     ADCSRA = ((1<< ADEN)| // 1 = ADC Enable
098           (0<< ADSC)| // ADC Start Conversion
099           (1<<ADATE)| // 1 = ADC Auto Trigger Enable
100           (0<< ADIF)| // ADC Interrupt Flag
101           (0<< ADIE)| // ADC Interrupt Enable
102           (1<<ADPS2)|
103           (0<<ADPS1)| // ADC Prescaler : 1 MHz.
104           (0<<ADPS0)); 
105  
106     ADCSRB = ((1<<ADTS2)|   // Sets Auto Trigger source - Timer/Counter1 Compare Match B
107           (0<<ADTS1)|
108           (1<<ADTS0));
109  
110         /* Set up TIMER 1 - ADC sampler */
111         TIMSK0 = 0x00;
112         TIMSK1 = 0x00;
113         TIMSK2 = 0x00;
114  
115         TCCR1A = 0;
116         TCCR1B = 0;
117         TCCR1C = 0;
118  
119         TCCR1A =  ((1<<WGM11) | (1<<WGM10));       // Mode 15, Fast PWM
120         TCCR1B =  ((1<<WGM13) | (1<<WGM12));       // Mode 15, Fast PWM
121  
122         TCCR1B |=  (1<<CS10);                      // clk/1 prescaling.
123         OCR1A  = SMP_TMR1;
124         OCR1B  = SMP_TMR1;
125  
126         TCNT1  = 0;
127         TIFR1   |= (1<<OCF1B);
128         TIMSK1  |= (1<<OCIE1B);

denysKo_O
Offline
Зарегистрирован: 07.01.2017

когда беру код выше-скетч вообще не работает.

Волшебник
Offline
Зарегистрирован: 22.12.2016

А где скетч?

denysKo_O
Offline
Зарегистрирован: 07.01.2017

Волшебник пишет:

А где скетч?

предоставлю тестовые куски обсчитывающие переменное напряжение
за остальной код-пока стыдно очень))
 

//voltmeter
 
 int maxValueV;
  int minValueV;
           int readValueV; 
           double testV=0; 
#define PIN A1
 
void loop(){getVPPV();
testV=((((maxValueV-minValueV)*4.94)/1024))*100;
lcd.setCursor(8,1);
 lcd.print(testV);
 
}
float getVPPV()
{
       
           //value read from the sensor
  maxValueV = 0;
   minValueV = 1024;//float result;
           // store min value here
  
   uint32_t start_time = millis();
   while((millis()-start_time) < 500) //sample for 1 Sec
   {
       readValueV = analogRead(PIN);
       // see if you have a new maxValue
       if (readValueV > maxValueV) 
       {
           /*record the maximum sensor value*/
           maxValueV = readValueV;
       }
       if (readValueV < minValueV) 
       {
           /*record the minimum sensor value*/
           minValueV = readValueV;
       }
   }
   
   // Subtract min from max
  // result = ((maxValue - minValue) * 4.94)/1024.0;
      
   //return result;
 }

в void setup() только инициализация дисплея
за основу взял код от замера переменки ACS712

 

denysKo_O
Offline
Зарегистрирован: 07.01.2017

Таким способом переменку показывает
но при подаче 6,6 волтьа переменки
на дисплее скачет от 0,96 до 11,8

я понимаю почему так
и что это из за синуса 50 Г
вовпрос в том как исправить что бы работало точно с любой частотой

Волшебник
Offline
Зарегистрирован: 22.12.2016

Я пасс, Бог вам в помощь.

denysKo_O
Offline
Зарегистрирован: 07.01.2017

Волшебник пишет:

Я пасс, Бог вам в помощь.

Спасибо вам!
а не подскажете как работает ваш код?
что у меня не завелся

Тед
Offline
Зарегистрирован: 06.11.2017

А как подключить, где пин для входа и выхода ?