Posts tagged PIC
Последняя и заключительная версия AutoReset .
0Заканчиваю доделывать свой текущий проект «AutoReset » , подвожу итоги и рассказываю что изменилось в последней версии . Начнем по порядку. Во первых хотелось рассказать что есть два режима «Деликатный» и «Агрессивный». Они отличаются друг от друга тем что:
Деликатный режим : В его режим работы входит , запись времени перезагрузки компьютера что в последующем можно вести статистику и наблюдать когда компьютер перезагружался. Записи времени хранятся в самом приборе и извлечь от туда их можно только через программу которая коннектится с прибором. В этом режиме не используется кнопка включения питания компьютера.
Принцип работы режима:
При включении компьютера прибор ожидает связи с программой. После синхронизации с программой прибор может сохранить в себе время перезапуска компьютера. Смоделируем такую ситуацию. Компьютер загрузился, прибор синхронизировался с компьютером, но компьютер завис и прибор потерял синхронизацию с программой.
Действия прибора : записывает последнее время сессии с компьютером и выполняет перезагрузку по установленным предустановкам и далее ожидает синхронизацию с программой.
Агрессивный режим : В этом режиме , отсутствует запись времени в прибор и прибор работает в циклическом режиме перезагрузки или до синхронизации с компьютером.
Принцип работы режима:
При включении компьютера, прибор запускает обратный отсчет времени для перезагрузки или включении компьютера, и также ожидает синхронизации с компьютером. Да прибор может использовать кнопку включения компьютера в этом режиме.
- Если синхронизация не произошла в установленный участок времени он повторяет действия по предустановленным настройкам в циклическом режиме или ожидает синхронизации с компьютером
- Если синхронизация с компьютером произошла он работает в режиме ожидания обрыва с компьютером
Все предустановки прибора выставляются через программу которая синхронизируется с прибором.
Продолжение следует…..
Авторесет.
0Представляю вам свой новый проект. Авто ресет или можно назвать watch dogs.
Устройство предназначено для удержания ПК в активном состоянии , то есть при зависании или сбое ПК прибор сделает РЕСТАРТ ПК.
Устройство состоит из коробки с проводом USB и индикаторами обозначающими состояние прибора и еще провод для подключения к плате на ПИН (RESET). Сделана кнопка для эмуляции самой кнопки РЕСЕТ и для связи прибора с программой, у кнопки двойное предназначение в зависимости от текущего состояния прибора.
Всё устройство делалось под заказ , для одной организации которая занимается продажей комплектующих для ПК и соответственно еще и занимается сборкой ферм для майнинга. И требовалось устройство для удержания ПК в активном состоянии, но китайские поделки были не только дорогими но и неудобными по подключению. И нужно было сделать устройство чтоб было просто подключить к ПК и не запариваться с драйверами. Что и было сделано.
Начну по подробней.
Есть дополнение к прибору , это программа для WINDOSW.
Программа выполняет связь с прибором по USB шнуру , при подключении прибора, активируется и начинает синхронизацию с прибором.
В закладке СТАТИСТИКА можно посмотреть время перезагрузок которые были записаны в самом приборе , записи о перезагрузках не хранятся на ПК эти записи хранит само устройство в своей памяти. Есть возможность записи удалить полностью или сохранить копию в файл на ПК.
В закладке НАСТРОЙКИ можно увидеть установки для программы и прибора.
- Прятать (AR) при загрузке WINDOWS — данная опция делает запись в конфигурационный файл программы на ПК, что программа должна спрятаться в трэй при запуске WINDOWS.
- Запуск (AR) при запуске WINDOWS — данная опция делает запись в файл реестр WINDOSW , что программа будет загружаться автоматически при запуске операционной системы.
- Удержание компьютера включенным (Прибор) — данная опция делает запись в самом приборе , и при синхронизации прибора с программой устройство начинает отслеживать связь с программой. Если связь теряется то устройство начинает обратный отсчет для перезагрузки ПК.
- Установлен звуковой сигнал (Прибор) — данная опция делает запись в самом приборе что все действия сопровождаются звуковым сигналом из прибора , в приборе установлен зуммер который будет оповещать о обратном отсчете , перезагрузке ПК.
- Время для обратного отсчета перед перезагрузкой — предоставлено для индивидуальной установки обратного отсчета времени перед перезагрузкой ПК
В закладке Обновление можно увидеть версию самой программы и версию прибора к которому подключено. При нажатии кнопки (Последние обновления программы) можно почитать последние новости обновлении программы.
Запуск и работа прибора с программой.
При подключении прибора первый раз к WINDOWS , вам нужно подождать некоторое время , для определения операционной системы данного устройства. Драйвера вам не нужно устанавливать, контроллер на котором сделан прибор определяется операционной системой как HID устройство и работает отлично на стандартных драйверах которые заложены в WINDOWS.
После можно запускать программу и делать индивидуальные настройки для своего пк.
Работа прибора и индикация .
-
- Зеленый индикатор —
- индикатор гори постоянно это означает синхронизация с программой установлена
- индикатор не гори это означает синхронизация с программой не установлена или программа просто не запущена
- индикатор моргает это означает синхронизация с программой установлена и включен режим удержания ПК включенным , если при обрыве в этот момент произойдет обрыв синхронизации прибора с программой будет запущен обратный отсчет для перезагрузки
- Красный индикатор — моргает это означает запущен обратный отсчет для перезагрузки
- Синий индикатор — горит тогда когда есть питание на приборе
- Желтый индикатор — горит это означает что в приборе есть записи о последних перезагрузках, их можно просмотреть во вкладке статистика.
- Зеленый индикатор —
Кнопка на приборе .
Кнопкой на приборе можно
- отменить режим удержания ПК, когда зеленый индикатор моргает
- закрыть программу для синхронизации , когда зеленый индикатор горит постоянно
- с эмулировать нажатие кнопки РЕСЕТ , когда зеленый индикатор и красный индикатор не горит
- отменить обратный отсчет для перезагрузки , когда моргает красный индикатор
PIC Bootloader для PIC18F45K22 от www.mikroe.com
0Всем привет.
Продолжаю рассказывать про развитие моей идеи с PIC18F45K22 и дешевыми цифровыми передатчиками NRF24L01. Существует программа загрузчик от компании mikroe.com .
Если присутствует загрузчик в процессоре , то не требуется программатор для перепрограммирование данного устройства , то есть идет удешевлении самого устройства.
pic_bootloader_v102.zip
Новая плата , старый проект. ПлатаPIC18F4(3..6)K22
0Всем привет , недавно заказал изготовление платы для процессоров серии PIC18F в корпусе TQFP 44. Проект старый, но давно хотел сделать.
Вот наконец то свершилось, подкопил немного денежек и заказ. Заказывал в pselectro.ru , я заказываю у них давно уже , и всегда меня не подводили. Качество плат на высоте. Если вам говорят что надо заполнять сложные формуляр и какие то документы сложные , это полный обман в пользу китайцев. Почему сейчас объясню. Если вы рисуете платы в каких либо таксировщиках, то просто не можете не знать, те термины которые у вас спрашивают для заполнения нескольких строк в бланке оформления.
Вот параметры платы
Плата сделана для контроллера PIC18F45K22. Ее можно использовать и для других процессоров из серии PIC18F, она подходит .
Отличительные особенности моей платы:
Отдельное питание для процессора, перемычкой вы сами выбираете какое будет питание у процессора. Можно выбрать внешнее или от стабилизатора который стоит у вас на плате. А также вы этой перемычкой можете отключить процессор от питания платы , для того чтоб запрограммировать внутрисхемно.

Сделаны выходы для UART1 , под плату CP2102 USB-UART.
С лева индикатор питания, и цепочка резистора и конденсатора для процессора.
Посередине кнопка для сброса.
С права кварц с конденсаторами.
Сделан разъем для модуля NRF24L01, а также может являться SPI1 разъемом. Питание у этого разъема только от стабилизатора на плате.
Есть разъем для программирования, для программатора PICKIT2/PICKIT3. Пины порта B6/B7 больше нигде не задействованы на внешних выходах.
Стабилизатор питания типа LD1117A33 корпус SOT223, на 3,3 вольта и немного конденсаторов для сглаживания напряжения питания. Можно поставить и любой стабилизатор на 5 вольт, тогда для процессора использовать, только тогда разъем SPI1 для NRF24L01 тоже будет иметь пин питания на 5 вольт, и джампер для выбора питания процессора использовать только для внутреннего питания процессора.
Есть карта обзора на плату.
Потайная комната на 485 интерфейсе.
0Открываю ещё одну мою задумку, уже работает на половину, потому как программа которую я сегодня опробовал работает на моем железе.
Заметьте, что я использую только свои платы, которые сам придумал, они работают в моем старом проекте, который называется (Болванка для домашних поделок на PIC).
На нём будет сделана основная масса моих идей, которые я хочу реализовать в дальнейшем.
Объясняю, что хочу сейчас сделать.
Сеть устройств, связных на протоколе RS485, котороя будет собирать информацию о текущей обстановке квартиры. Наблюдать за температурой, задымления воздуха, хочу привязать управление за аквариумом, перемещением по комнатам, наблюдение за входной дверью. И при случае подавать СМС уведомления, а также хочу привязать управление квартирой через СМС.
Устройство (Мастер)
- будет управлять нагрузкой на подсветку на светодиодах
- будет иметь часы реального времени (ds1307 или аналоге)
- управлять включением кнопки моего основного компьютера ( для удобства)
- управлять включением кнопки моего хранилища данный (старый винт на 32 гига. туда скидываю важную инфу. иногда приходиться включать)
- управлять включением кнопки переноски (там висят паяльная станция и ещё куча приборов)
- принимать команды от GSM модема
- следить за RFID приставкой (если потребуется закрыть комнату на электронный ключ, а то ребёнок достает уже до ручки и умеет открывать дверь )
Тестирую RS-485 и “LV-32MX v6” + “EasyPIC5”
0И вот я снова со своими бредовыми идеями. По случаю недавней моей покупки платы “ LV-32MX v6 Development System” от фирмы “MikroElektronika”. Я решил соединить две свои платы “LV-32MX v6” + “EasyPIC5” интерфейсом RS-485. Прикупил AD485, нарисовал плату и всё это запаял. Фотки платы прелогается.
Взял несколько примеров уже написанных у “MikroElektronika” , немного их подправил и вот что получилось.
Пишем программу для PICBOT.
0По пожелания читателей изменил свойства страницы, поставил растягивающую.
Продолжаю писать про PICBOT.
Первые действия, устанавливает на загрузку библиотеки, которые нам нужны.
ФОТО
Есть основные несколько процедур для управления двигателями.
procedure Change_Duty(speedA,speedB:byte;);// ************* ИСМЕНЕНИЕ СКОРОСТИ ДВИГАТЕЛЕЙ**********
begin
motor_duty_A:=speedA; // Save for old speed
motor_duty_B:=speedB;
PWM1_Set_Duty(speedA); // Motor A
PWM2_Set_Duty(speedB); // Motor B
end;
procedure Start_motor; //********** Motor START ********/
begin
PWM1_Start();
PWM2_Start();
end;
procedure Stop_motor; //********** Motor STOP ********/
begin
PWM1_Stop();
PWM2_Stop();
end;
procedure Motor_A_FWD; //********** Motor A Forward ********/
begin
Pwm1_Start();
PORTD.0 :=0;
PORTD.1 :=1;
end;
procedure Motor_B_FWD; //********** Motor B Forward ********/
begin
Pwm2_Start;
PORTB.1 :=0;
PORTB.2 :=1;
end; //************************************/
procedure Motor_A_BWD; //********** Motor A Backward *******/
begin
Pwm1_Start;
PORTD.0 :=1;
PORTD.1 :=0;
end; //************************************/
procedure Motor_B_BWD ; //********** Motor B Backward *******/
begin
Pwm2_Start;
PORTB.1 :=1;
PORTB.2 :=0;
end; //************************************/
procedure Motor_A_Off; //********** Motor A Off ************/
begin
Pwm1_Stop;
PORTD.0 :=0;
PORTD.1 :=0;
end; //************************************/
procedure Motor_B_Off; //********** Motor B Off ************/
begin
Pwm2_Stop;
PORTB.1 :=0;
PORTB.2 :=0;
end; //************************************/
procedure Motor_Forward(speedA,speedB:byte); //********** Go Forward ************/
begin
Motor_Init;
Change_Duty(speedA,speedB);
Motor_A_FWD;
Motor_B_FWD;
end; //************************************/
procedure Motor_Backward(speedA,speedB:byte); //********** Go Backward ************/
begin
Motor_Init;
Change_Duty(speedA,speedB);
Motor_A_BWD;
Motor_B_BWD;
end; //************************************/
procedure Motor_S_Right(speedA,speedB:byte); //********** Spin Left *************/
begin
Motor_Init;
Change_Duty(speedA,speedB);
Motor_A_FWD;
Motor_B_BWD;
end; //************************************/
procedure Motor_S_Left(speedA,speedB:byte); //********** Spin Right ************/
begin
Motor_Init;
Change_Duty(speedA,speedB);
Motor_A_BWD;
Motor_B_FWD;
end; //************************************/
procedure Motor_Stop; //********** Stop Motor ************/
begin
Motor_Init;
Change_Duty(0,0);
Motor_A_Off;
Motor_B_Off;
end; //************************************/
PROCEDURE ADC_INIT; // *****************НАСТРАИВАЕМ GP2D120 ПОД ДАЛЬНОМЕР
BEGIN
INTCON := 0;
OPTION_REG := $80;
ADCON1 := $82;
TRISB.6:=0; // НАСТРОЙКА ПОД ФАРЫ КА ВЫХОДЫ
TRISB.7:=0; // НАСТРОЙКА ПОД ФАРЫ КА ВЫХОДЫ
TRISA.2 := 1; // УСТАНАВЛИВАЕМ RA2 КАК ВХОД
ANSEL := 0x04; // НАСТРАИВАЕМ ПОРТ AN2 КАК АНАЛОГОВЫЙ ВХОД
ANSELH := 0;
END; //************************************/
procedure ADC_READ_GP2D120_PICBOT; // ОПРЕДЕЛЯЕМ РАСТОЯНИЕ ДО ПРЕДМЕТА
begin
A:=0;
adc_rd:= ADC_read(2); // СЧИТЫВАЕМ ИНФОРМАЦИЮ С ДАЛЬНОМЕРА
adc_rd_h := adc_rd div 78 ; // ПРОДГОНЯЕМ ВЫХОДНЫЕ ДАННЫЕ
adc_rd_l := (adc_rd mod 78) div 7; // С АЦП ПОД ВОЛЬТЫ
A:=byte(adc_rd_h); // И ПЕРЕВОДИМ В ЧИСЛУЮ ДАННУЮ БАЙТ
IF A>=3 THEN BEGIN PORTB.6:=1; PORTB.7:=0; END // ЗАЖИГАЕМ ФАРЫ ЗЕЛЁНЫЕ СИНИ ВЫКЛЮЧАЕМ ЕСЛИ ЕСТЬ ПРЕПЯТСТВИЕ
ELSE BEGIN PORTB.6:=0; PORTB.7:=1; END
end;
Вот основной код программы которая двигает робот.
begin
ADC_INIT; // Устанавливаем настройки АЦП
motor_drive:=0; //
motor_init_:=0; //
Motor_Init; // устанавливаем настройки на драйвер двигателя
ADC_READ_GP2D120_PICBOT; // ОПРЕДЕЛЯЕМ РАСТОЯНИЕ ДО ПРЕДМЕТА
Start_motor; // ЗАПУСКАЕМ ДВИГАТЕЛИ
error := Soft_UART_Init(PORTC, 7, 6, 1200, 1); // УСТАНАВЛИВАЕМ УАРТ НА ПРИЁМ КОМАНД
Delay_ms(100); // ЗАДЕРЖКА НЕБОЛЬШАЯ
M1:
byte_read := Soft_UART_Read(error); // СЧИТЫВАЕМ КОМАНДЫ С РАДИОМОДУЛЯ
while TRUE do //
begin
ADC_READ_GP2D120_PICBOT; // ОПРЕДЕЛЯЕМ РАСТОЯНИЕ ДО ПРЕДМЕТА
IF A> 3 THEN // ЕСЛИ ОПРЕДЕЛЁН ПРЕДМЕТ ТО
CASE motor_drive OF
0: BEGIN Motor_Backward(255,255); // ЕСЛИ СТОИМ НАМЕСТЕ , и есть приближение предмета ТО ОТЕЖАЕМ И ОСТАНАВЛИВАЕМСЯ
repeat
BEGIN
ADC_READ_GP2D120_PICBOT;
END;
until A <3 ;
Motor_Stop;
END;
5: BEGIN // ЕСЛИ ДВИГАЕМСЯ ВПЕРЁД ТО НУЖНО ОТЪЕХАТЬ НАЗАД И ПОВЕРНУТЬ И СНОВА ЕХАТЬ ВПЕРЁД
Motor_Backward(255,255);
repeat
BEGIN
ADC_READ_GP2D120_PICBOT;
END;
until A <3 ;
Motor_S_Left(255,255);
Delay_ms(300);
IF motor_drive=5 THEN Motor_Forward(255,255)
ELSE Motor_Stop;
END;
END;
if byte_read <> 230 then goto m1;
byte_read := Soft_UART_Read(error);
if (error = 0) then // ЕСЛИ НЕТ ОШИБОК
BEGIN
//————————————————————————
//————————————————————————
CASE byte_read OF
17:BEGIN Motor_Forward(255,255);motor_drive:=5; END;
12: BEGIN Motor_Backward(255,255); motor_drive:=1; END;
15: BEGIN Motor_Stop; motor_drive:=0; END;
14: BEGIN Motor_S_Left(255,255); motor_drive:=3; END; // Call Spin Left END;
27: BEGIN Motor_S_Right(255,255); motor_drive:=4; END;
END;
//————————————————————————————
//————————————————————————
END;
END;
end.
end.