Официальный сайт компании Arduino по адресу arduino.cc
Я не понимаю, а резисторы 15к и 200? Куда и как? На листе бумаги нарисуйте, не обязательно в редакторах схем, телефоном сфотайте и покажите
Апдейт. на рисунке ошибка, там не 150к а 15кОМ
Надо так:
понижать на входе? понял
на этом отпике нашел алгоритм дальнейшего расчетаhttp://arduino.ru/forum/apparatnye-voprosy/voltmer-220v
а именно
1
int
mean;
// здесь будем вычислять среднее арифметическое
2
long
oldTime;
// с помощью этой переменной будем определять момент очередного обращения к АЦП
В loop() пишем:
if
(millis()-oldTime>23) {
// наступило время опрашивать АЦП?
oldTime = millis();
// приготовимся к следующему опросу
3
mean = mean*9/10+analogRead(PIN);
// а теперь собственно опрос и подсчет среднего арифметического последних 10 результатов
4
}
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));
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);
когда беру код выше-скетч вообще не работает.
А где скетч?
предоставлю тестовые куски обсчитывающие переменное напряжение за остальной код-пока стыдно очень))
в void setup() только инициализация дисплея за основу взял код от замера переменки ACS712
Таким способом переменку показывает но при подаче 6,6 волтьа переменки на дисплее скачет от 0,96 до 11,8
я понимаю почему так и что это из за синуса 50 Г вовпрос в том как исправить что бы работало точно с любой частотой
Я пасс, Бог вам в помощь.
Спасибо вам! а не подскажете как работает ваш код? что у меня не завелся
А как подключить, где пин для входа и выхода ?
Я не понимаю, а резисторы 15к и 200? Куда и как? На листе бумаги нарисуйте, не обязательно в редакторах схем, телефоном сфотайте и покажите
Апдейт. на рисунке ошибка, там не 150к
а 15кОМ
Надо так:
Надо так:
понижать на входе?
понял
на этом отпике нашел алгоритм дальнейшего расчета
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
}
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);
когда беру код выше-скетч вообще не работает.
А где скетч?
А где скетч?
предоставлю тестовые куски обсчитывающие переменное напряжение
за остальной код-пока стыдно очень))
в void setup() только инициализация дисплея
за основу взял код от замера переменки ACS712
Таким способом переменку показывает
но при подаче 6,6 волтьа переменки
на дисплее скачет от 0,96 до 11,8
я понимаю почему так
и что это из за синуса 50 Г
вовпрос в том как исправить что бы работало точно с любой частотой
Я пасс, Бог вам в помощь.
Я пасс, Бог вам в помощь.
Спасибо вам!
а не подскажете как работает ваш код?
что у меня не завелся
А как подключить, где пин для входа и выхода ?