Ревич, Ю.В. Программирование микроконтроллеров AVR: от Arduino к ассемблеру

408 Часть 111. Практическое программирование микроконтроллеров АVR Ультразвуковой дальномер HC-SR04 показан на рис. 1 6 . 3 , а его подключение к контроллеру- на рис . 1 6 .4. HC-SR04 запускается импульсом длительностью не менее 1 О мкс и по получении ультразвукового эха выдает перепад из единицы в нулевое значение. Импульсы мы формируем примерно каждую секунду с по­ мощью TimerO . Для измерения интервала по окончании запускающего импульса включаем Timer l . Так как скорость звука в воздухе при нормальных условиях око­ ло 340 м/с, то каждая секунда до появления эха означает, что сигнал пробежал до цели 1 70 метров (340 - туда и обратно) . Соответственно, микросекунда означает расстояние О, 1 7 мм или 0,0 1 7 см, а один метр будет соответствовать 5 800 мкс . Что­ бы получить расстояние в сантиметрах, величину времени отклика нужно умно­ жить на 0,0 1 7 (или поделить на 58 , как это рекомендуется в Arduino). Рис. 1 6.3. Ультразвуковой дальномер HC-SR04 0,1 кRX адаптера -----� UARTдля теста 4 МГц c:::J HC-SR04 Vcc Trig 1------1 Echo GND D1 1 Reset Vcc 20 2 RXD (PDO) SCK 1 9 3 TXD (PD1 ) MISO 1 8 4 XTAL2 (Рд1 ) MOSI 1 7 5 XTAL1 (РАО) (ОС1 8) РВ4 1 6 6 INTO (PD2) (ОС1д) РВЗ 1 5 7 INT1 (РDЗ) РВ2 1 4 8 PD4 (TO) РВ1 1 3 9 PDS (Т1 ) РВО 1 2 1 0 GND (PD6) ICP1 11 ATtiny231 3 1----" + s в С2 т 1 ,о + S B GND Vcc DIO CLK в в в Рис. 1 6.4. Подключение ультразвукового дальномера HC-SR04 к контроллеру ATtiny231 3 Это действие мы организуем следующим образом . При частоте 4 МГц и коэффици­ енте делителя Timer 1 , равном 1 : 8, мы отсчитываем по 2 мкс в каждом такте тайме­ ра, потому число в счетчике на 1 метр будет равно 2900. Для удобства расчетов сразу переведем результат в мкс, умножив его на 2 (т. е. сдвинув через перенос вле­ во на 1 разряд) . Умножим 0,0 1 7 на $ FFFF, перемножим полученное число 1 1 1 4

RkJQdWJsaXNoZXIy MTExODQxMg==