GPS EB-500 + ATMEGA. Схема. Пример для WinAVR (GCC).
Некоторое время назад я публиковал статью GPS модуль EB-500 и ATMega и GPS. Расчет дистанции между двумя точками по GPS координатам. Расчет курса на точку. Теперь представляю пример схемы на базе контроллера ATMEGA64 проект для WinAVR (GCC). В проекте используется доработанная библиотека для EB-500 115200. Поскольку большинство модулей EB-500 теперь работают на скорости 115200, пришлось немного модифицировать разбор сообщений модуля.
Микроконтроллер работает от встроенного RC-генератора на частоте 8Мгц. Крайне желательно увеличить частоту до 16Мгц. Поскольку при 8Мгц могут появляться ошибки при чтении с UART на такой скорости. Ситуацию спасает регистр, позволяющий калибровать частоту встроенного RC-генератора. В примере он не задействован, но в других проектах мне приходилось применять калибровку частоты.
На схеме изображены варианты подключения к дисплеям WG12864A и WG12864B. Проект скомпилирован для WG12864A. Если будете использовать WG12864B, включите в файле WG12864A.h строки
#define WG12864B
// Comrade_B
#define LCD_E 0b00000100
#define LCD_RS 0b00001000
#define LCD_RW 0b00010000
#define LCD_RST 0b00100000
#define LCD_CS2 0b01000000
#define LCD_CS1 0b10000000
И закомментируйте
// Comrade_A
#define LCD_RST 0b00100000
#define LCD_E 0b00010000
#define LCD_RW 0b00001000
#define LCD_RS 0b00000100
#define LCD_CS2 0b01000000
#define LCD_CS1 0b10000000
Схема
![atmega64_eb_500](/uploads/2013/08/atmega64_eb_500-300x125.gif)
Схема имеет два питания +3.3 и +5В. Максимальное напряжение питания для EB-500 - 4.2В. Дисплеи WG12864 требуют 5В. На схеме блок питания не обозначен. Собран он на базе двух микросхем MAX1674 - прибор питается от батареи.
Обратите внимание на разъем программатора ISP. Две линии задействованы и для программатора и для управления GPS модулем EB-500. Если во время прошивки GPS модуль будет включен, он будет мешать корректной прошивке контроллера. На время прошивки GPS модуль нужно отключить. Это можно сделать, отключив питание батареи BAT1. При отсутствии напряжения на входе V_RTC_3V3 GPS модуль EB-500 не запускается и не мешает программировать микроконтроллер. Возможен и другой путь: использовать перемычки или переключатели.
Программа
В программе задействован таймер TIMER2, который срабатывает 100 раз в секунду. Раз в секунду он выставляет влаг FLAG_ONE_SEC=1, согласно которому данные отображаются на дисплее и FLAG_ONE_SEC устанавливается в 0. Таким образом, данные отображаются один раз в секунду. В примере реализованы функции расчета курса и дистанции до указанной точки. Координаты точки указываются в строках:
// Расчетная точка. Дистанция и направление рассчитывается до этой точки.
sprintf(GPS_Current_Point.name, " Point 1");
GPS_Current_Point.latitude = 41034568;
GPS_Current_Point.latitude_c = `N`;
GPS_Current_Point.longitude = 31243322;
GPS_Current_Point.longitude_c = `E`;
Статьи по теме: GPS. Расчет дистанции между двумя точками по GPS координатам. Расчет курса на точку GPS модуль EB-500 и ATMega Обновленный GPS модуль EB-500
Недавні записи
- Selenium
- Комп'ютерний зір (Computer Vision)
- Деякі думки про точність вимірювань в електроприводі
- Датчики Холла 120/60 градусів
- Модуль драйверів напівмосту IGBT транзисторів
- Драйвер IGBT транзисторів на A316J
- AS5600. Варіант встановлення на BLDC мотор
- DC-DC для IGBT драйверів ізольований 2 W +15 -8 вольт
- U-FOC - Векторне керування безколекторними моторами
- FOC - своя реалізація векторного керування. Підбиваю підсумки 2022 року
Tags
raspberry-pi st-link bldc timer max1674 bluetooth eb-500 python ngnix rtc atmega servo avr pwm web tim uart remap brushless bme280 smd esp8266 eeprom bkp capture dht11 ethernet sensors websocket mongodb 3d-printer piezo rs-232 led css meteo i2c options exti html battery soldering bmp280 wifi mpu-9250 examples dma adc gpio sms motor solar hih-4000 lcd docker ssd1306 encoder dc-dc displays pmsm barometer watchdog java-script flask git gps mpu-6050 flash nvic books foc nodemcu programmator usb usart rfid mpx4115a stm32 ssd1331
Архіви