Автор Тема: Arduino+IR Sensor  (Прочетена 4323 пъти)

vranjastena

  • Робо-Новак
  • *****
  • Публикации: 18
    • Профил
Arduino+IR Sensor
« -: Юли 09, 2013, 12:57:54 pm »
Здравейте.Имам следният въпрос.Използвам gp2y0a41sk0f-4см-30см и Ардуино Уно. Искам да ми изкарва данните в сантиметри.Използвам следната програма #define numberOfSensors 2
int ir1 = A1;  
 
void setup() {
  Serial.begin(38400);                            
}
void loop() {
  float volts = analogRead(ir1)*0.0032226;
  float distance = 20.3*pow(volts, -1.10);  
  Serial.print(distance);
 
  delay(250);                                    
}
.Стойностите,който получавам имат голяма грешка,около 2 см.Опитах да променям коефициентите,който са взети от характеристиките на сензора,но грешката не се променя.Тя е от порядъка на 2 см.Някакви предложения или идеи?

Благодаря.

emil74

  • Зомбиран Роботостроител
  • *****
  • Публикации: 227
    • Профил
    • http://www.maystorio.com
Arduino+IR Sensor
« Отговор #1 -: Юли 09, 2013, 03:58:05 pm »
Провери данните за напреженията. Не съм чел datasheet-a, но е много вероятно графиката да е до 3,3V, а не до 5. Тогава ADC на Arduino ще очаква и ще смята за 1024(май ADC беше 10 бита) = 5V, а при сензора това ще е всъщност 3,3V, т.е. той никога няма да предаде такава стойност. Така като гледам, трябва да дадеш корекция на analogRead, за 1024=3,3V

Опитай вместо реда за четене, който имаш, да поставиш този:
float volts = analogRead(ir1)*1.51515*0.0032226;