ELEMENTUS.RU | PIC

Posts tagged PIC

Последняя и заключительная версия AutoReset .

0

Заканчиваю доделывать свой текущий проект «AutoReset » , подвожу итоги и рассказываю что изменилось в последней версии . Начнем по порядку. Во первых хотелось рассказать что есть два режима «Деликатный» и «Агрессивный». Они отличаются друг от друга тем что:

Деликатный режим : В его режим работы входит , запись времени перезагрузки  компьютера что в последующем можно вести статистику и наблюдать когда компьютер перезагружался. Записи времени хранятся в самом приборе и извлечь от туда их можно только через программу которая коннектится с прибором. В этом режиме не используется кнопка включения питания компьютера.

Принцип работы режима:

При включении компьютера прибор ожидает связи с программой. После синхронизации с программой прибор может сохранить в себе время перезапуска компьютера. Смоделируем такую ситуацию. Компьютер загрузился, прибор синхронизировался с компьютером, но компьютер завис и прибор потерял синхронизацию с программой.

Действия прибора : записывает последнее время сессии с компьютером и выполняет перезагрузку по установленным предустановкам и далее ожидает синхронизацию с программой.

Агрессивный режим : В этом режиме , отсутствует запись времени в прибор и прибор работает в циклическом режиме перезагрузки или до синхронизации с компьютером.

Принцип работы режима:

При включении компьютера, прибор запускает обратный отсчет времени для перезагрузки или включении компьютера, и также ожидает синхронизации с компьютером. Да прибор может использовать кнопку включения компьютера в этом режиме.

  1. Если синхронизация не произошла в установленный участок времени он повторяет  действия по предустановленным настройкам в циклическом режиме или ожидает синхронизации с компьютером
  2. Если синхронизация с компьютером произошла он работает в режиме ожидания обрыва с компьютером

Все предустановки прибора выставляются через программу которая синхронизируется с прибором.

Продолжение следует…..

Авторесет.

0
Представляю вам свой новый проект. Авто ресет или можно назвать watch dogs.

Устройство предназначено для удержания ПК в активном состоянии , то есть при зависании или сбое ПК прибор сделает РЕСТАРТ ПК.

Устройство состоит из коробки с проводом USB и индикаторами обозначающими состояние прибора и еще провод для подключения к плате на ПИН (RESET). Сделана кнопка для эмуляции самой кнопки РЕСЕТ и для связи прибора с программой, у кнопки двойное предназначение в зависимости от текущего состояния прибора.

Всё устройство делалось под заказ , для одной организации которая занимается продажей комплектующих для ПК и соответственно еще и занимается сборкой ферм для майнинга. И требовалось устройство для удержания ПК в активном состоянии, но китайские поделки были не только дорогими но и неудобными по подключению. И нужно было сделать устройство чтоб было просто подключить к ПК и не запариваться с драйверами. Что и было сделано.

Начну по подробней.

Есть дополнение к прибору , это программа для WINDOSW.

Программа выполняет связь с прибором по USB шнуру , при подключении прибора, активируется и начинает синхронизацию с прибором.

В закладке СТАТИСТИКА можно посмотреть время перезагрузок которые были записаны в самом приборе , записи о перезагрузках не хранятся на ПК эти записи хранит само устройство в своей памяти. Есть возможность записи удалить полностью или сохранить копию в файл на ПК.


В закладке  НАСТРОЙКИ можно увидеть установки для программы и прибора.
  1. Прятать (AR) при загрузке WINDOWSданная опция делает запись в конфигурационный файл программы на ПК, что программа должна спрятаться в трэй при запуске WINDOWS.
  2. Запуск (AR) при запуске WINDOWS — данная опция делает запись в файл реестр WINDOSW , что программа будет загружаться автоматически при запуске операционной системы.
  3. Удержание компьютера включенным (Прибор) — данная опция делает запись в самом приборе , и при синхронизации прибора с программой устройство начинает отслеживать связь с программой. Если связь теряется то устройство начинает обратный отсчет для перезагрузки ПК.
  4. Установлен звуковой сигнал (Прибор) — данная опция делает запись в самом приборе что все действия сопровождаются звуковым сигналом из прибора ,  в приборе установлен зуммер который будет оповещать о обратном отсчете , перезагрузке ПК.
  5. Время для обратного отсчета перед перезагрузкой — предоставлено  для индивидуальной установки обратного отсчета времени перед перезагрузкой ПК 

 

В закладке Обновление  можно увидеть версию самой программы и версию прибора к которому подключено. При нажатии кнопки (Последние обновления программы) можно почитать последние новости  обновлении программы.

Запуск и работа прибора с программой.

 

При подключении прибора первый раз к WINDOWS , вам нужно подождать некоторое время , для  определения операционной системы данного устройства. Драйвера вам не нужно устанавливать, контроллер на котором сделан прибор определяется операционной системой как HID устройство и работает отлично  на стандартных драйверах которые заложены в WINDOWS.

После можно запускать программу и делать индивидуальные настройки для своего пк.

Работа прибора и индикация .
    1. Зеленый индикатор — 
      1. индикатор гори постоянно это означает синхронизация с программой установлена
      2. индикатор не гори это означает синхронизация с программой не установлена или программа просто не запущена
      3. индикатор моргает это означает синхронизация с программой установлена и включен режим удержания ПК включенным , если при обрыве в этот момент произойдет обрыв синхронизации прибора с программой будет запущен обратный отсчет для перезагрузки
    2. Красный индикатор — моргает это означает запущен обратный отсчет для перезагрузки 
    3. Синий индикатор — горит тогда когда есть питание на приборе
    4. Желтый индикатор — горит это означает что в приборе есть записи о последних перезагрузках, их можно просмотреть во вкладке статистика.
Кнопка на приборе .

Кнопкой на приборе можно

  • отменить режим удержания ПК, когда зеленый индикатор моргает
  • закрыть программу для синхронизации , когда зеленый индикатор горит постоянно
  • с эмулировать нажатие кнопки РЕСЕТ , когда зеленый индикатор и красный индикатор не горит
  • отменить обратный отсчет для перезагрузки , когда моргает красный индикатор

PIC Bootloader для PIC18F45K22 от www.mikroe.com

0
Всем привет.
Продолжаю рассказывать про развитие моей идеи с PIC18F45K22 и дешевыми цифровыми передатчиками NRF24L01.  Существует программа загрузчик от компании mikroe.com .
Если присутствует загрузчик в процессоре , то не требуется программатор для перепрограммирование данного устройства , то есть идет удешевлении самого устройства.
pic_bootloader_v102.zip

Новая плата , старый проект. ПлатаPIC18F4(3..6)K22

0

nrf24l01

Всем привет ,  недавно заказал изготовление платы для процессоров серии  PIC18F  в корпусе TQFP 44. Проект старый, но давно хотел сделать.
Вот наконец то свершилось, подкопил немного денежек и заказ. Заказывал в  pselectro.ru , я заказываю у них давно уже , и всегда меня не подводили. Качество плат на высоте. Если вам  говорят что надо заполнять сложные формуляр и какие то документы сложные , это полный обман в пользу китайцев. Почему сейчас объясню. Если вы рисуете платы в каких либо таксировщиках, то просто не можете не знать, те термины которые у вас спрашивают  для заполнения  нескольких строк в бланке оформления.

 

img_20161127_162548

 

Вот параметры платы
ustanovki

 

Плата сделана для контроллера PIC18F45K22. Ее можно использовать и для других процессоров из серии PIC18F, она подходит .

img_20161203_131849

Отличительные особенности моей платы:
Отдельное питание для процессора, перемычкой вы сами выбираете какое будет питание у процессора. Можно выбрать внешнее или от стабилизатора который стоит у вас на плате. А также вы этой перемычкой можете отключить процессор от питания платы , для того чтоб запрограммировать внутрисхемно.
os1

 

 

 

 

 

 

 

 

 


os2

Сделаны выходы для UART1 , под плату CP2102  USB-UART.cp2102

 

 

 

 

 

 

 


os3

С лева индикатор питания, и цепочка резистора и конденсатора для процессора.
Посередине кнопка для сброса.
С права кварц с конденсаторами.

 

 

 

 


os4
Сделан разъем для модуля NRF24L01, а также может являться SPI1 разъемом. Питание у этого разъема только от стабилизатора на плате.24l01

 

 

 

 

 


os5Есть разъем для программирования, для программатора PICKIT2/PICKIT3. Пины порта B6/B7 больше нигде не задействованы на внешних выходах.

 

 

 

 

 


os6Стабилизатор питания типа LD1117A33 корпус SOT223, на 3,3 вольта и немного конденсаторов для сглаживания напряжения питания. Можно поставить и любой стабилизатор на 5 вольт, тогда для процессора использовать, только тогда разъем SPI1 для NRF24L01  тоже будет иметь пин питания на 5 вольт, и джампер для выбора питания процессора использовать только для внутреннего питания процессора.
Есть карта обзора на плату.

kartanrf24l01

ПК + RS485 + РЕЛЕ

0

Выкладываю новую поделку свою.

GSM Выключатель.

0

Доделал GSM выключатель.

Все рассказы в видео, смотрите и слушайте.

 

Потайная комната на 485 интерфейсе.

0

Открываю ещё одну мою задумку, уже работает на половину, потому как программа которую я сегодня опробовал работает на моем железе.

Заметьте, что я использую только свои платы, которые сам придумал, они работают в моем  старом проекте, который называется  (Болванка для домашних поделок на PIC).

На нём будет сделана основная масса моих идей, которые я хочу реализовать в дальнейшем.

Объясняю,  что хочу сейчас сделать.

Сеть устройств, связных на протоколе RS485, котороя будет собирать информацию о текущей обстановке квартиры. Наблюдать за температурой, задымления воздуха, хочу привязать управление  за аквариумом, перемещением по комнатам, наблюдение за входной дверью.  И при  случае подавать СМС уведомления, а также хочу привязать управление квартирой через СМС.

Устройство (Мастер)

  • будет управлять нагрузкой на подсветку на светодиодах
  • будет иметь часы реального времени (ds1307 или аналоге)
  • управлять включением кнопки моего основного компьютера ( для удобства)
  • управлять включением кнопки моего хранилища данный (старый винт на 32 гига. туда скидываю важную инфу. иногда приходиться включать)
  • управлять включением кнопки переноски (там висят паяльная станция и ещё куча приборов)
  • принимать команды от GSM модема
  • следить за RFID приставкой (если потребуется закрыть комнату на электронный ключ, а то ребёнок достает уже до ручки и умеет открывать дверь )
Уже собрано устройство  ( SLAVE пульт), весит у меня прямо над монитором, чтобы не тянуться до компа, под стол и в остальные места. 

Тестирую RS-485 и “LV-32MX v6” + “EasyPIC5”

0

И вот я снова со своими бредовыми идеями. По случаю недавней моей покупки платы “ LV-32MX v6 Development System” от фирмы “MikroElektronika”. Я решил соединить две свои платы  “LV-32MX v6” + “EasyPIC5” интерфейсом RS-485. Прикупил AD485, нарисовал плату и всё это запаял. Фотки платы прелогается.

Взял несколько примеров уже написанных у “MikroElektronika” , немного их подправил и вот что получилось.

 

PIC CHIP Robot Tank

0

Наткнулся тут на одну поделку, блин я тоже хочу так сделать.

И скоро руки у меня дойдут до неё.

Выменял серво привод у DI HALT не давно .

 

Пишем программу для 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.

Продолжение следует.
Go to Top