четверг, 15 октября 2015 г.

Логический анализатор из arduino

Сделал по необходимости на скорую руку из того что было под этой самой рукой.

[Image]
Характеристики:
  • 6 каналов
  • Экран 127 точек 
  • Цена деления от 200микро секунд (20мкрС на точку) до 10 секунд (1 сек на точку)
  • 4 режима работы
  • Буфер на 8 экранов (127х8 измерений х 6 каналов)
  • Управление 4 кнопки
Аппаратная часть:
  • atmega328 (arduino)
  • дисплей 128х64 на st7565
  • 4 кнопки
  • резисторы
Режимы работы.
  1. R - циклический (пишет в буфер и тут-же выводит на экран) 
  2. S - как 1 но запускается при изменении сигнала (не доделано)
  3. O - запускается при изменении входного сигнала и отрабатывает до заполнения буфера, после чего переходит в стоп режим.
  4. +B% Стоп режим - просмотр буфера.

[Image]

Довольно простая конструкция. Папка проекта с схемой и прошивкой тут

PS: можно сделать запись буфера на SD карту или вообще передачу на компьютер через последовательный порт (нужно писать GUI).

среда, 4 февраля 2015 г.

Инкубатор

Несложный инкубатор с цифровым индикатором.
характеристики:
  • Работает в 2х режимах: собственно инкубатор и термостат.
  • Питание 12в, нагрузка около 100вт - лампы накаливания.
  • Система автоматического "яйцеворота".
  • Несколько неизменяемых предустановок для разной птицы и 5 пользовательских изменяемых.
  • Цифро-буквенный индикатор работы (8х2). 
  • Датчик температуры 18b20.
  • AtMega8a
  • в качестве резервной батареи - старая литиевая АКБ от сотового.


схема тут. Вариант прошивки тут(проект Эклипс).

нужен отдельный блок питания на 12в

Очередной велосипед

Решил придумать очередной велосипед в виде универсального  программатора AVR PIC.
За основу взял AVR-Doper, добавил параллельное высоковольтное для AVR и последовательное  высоковольтное для PIC.

вот схема, вот прошивка(проект Эклипс)

фичи итого:
  • ISP последовательное для AVR
  • HVSP последовательное высоковольтное для AVR
  • HVPP параллельное высоковольтное для AVR
  • ICSP последовательное высоковольтное дляPIC
  • Последовательный Debug интерфейс 
  • USB интерфейс
  • Режимы USB HID и  CDC
  • на основе ATMega8a

[Image]


Работоспособность не гарантирую, проверял только ISP и ICSP для HID.

Для программирования AVR использовать Avrdude согласно инструкции на AVR-Doper (ну + HVPP режим).

HVPP:
avrdude -c stk500pp -P avrdoper -p m8 -U hfuse:r:hfuse.txt:h -U lfuse:r:lfuse.txt:h -Uflash:w:file.hex:a

HVSP:
avrdude -c stk500hvsp -P avrdoper -p m8 -U hfuse:r:hfuse.txt:h -U lfuse:r:lfuse.txt:h -Uflash:w:file.hex:a

ISP:
avrdude -c stk500v2 -P avrdoper -p m8 -U hfuse:r:hfuse.txt:h -U lfuse:r:lfuse.txt:h -Uflash:w:file.hex:a

Для PIC использовал модифицированную программу picprog.

picprog --erase --burn --input file.hex


Все разработки и тестирование проводились в Linux.

Обновление от 16.10.2015.

воскресенье, 23 ноября 2014 г.

Полу-умный дом, часть 1.

 Контроллер для некоторой автоматизации главным образом печи (обычной дровяной).

Входные параметры:

  • температура на выходе теплообменника печи,
  • температура и влажность в помещении,
  • концентрация СО в помещении,
  • датчик давления воды в водопроводе (побочная функция).

 Основываясь на входных параметрах, хитрым образом управляются следующие штуки:

  • насос отопления,
  • приточный вентилятор (проветривание),
  • вытяжной вентилятор,
  • водяной насос в колодце (побочная функция).

 На 4-х строчном индикаторе показываются все измеренные (входные) параметры.
 Предусмотрен контроль некоторых параметров с сигнализацией выхода за рамки (СО, температура).
 Также предусмотрена связь с вторым контроллером (вторая часть полу умного дома - пока не реализован ) по rs482 для передачи параметров и внешнего управления.

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

Схема тут.

PS: Устройство отработало уже год и себя вполне оправдало.

вторник, 5 августа 2014 г.

Конвертер PS2 - UART

  Для экспериментов собрал данное устройство на завалявшемся контроллере PIC16F628.
  Позволяет подключать PS/2 устройства к последовательному асинхронному порту UART.
  Достоинства решения в разгрузке процессора(супротив непосредственного анализа PS/2 сигнала на GPIO) и независимость правильности работы от его загрузки (своевременная обработка прерывания от устройства).

  Устройство тестировалось на КПК ASUS MyPal a620, который имеет выводы UART на внешнем разъеме.

Исходник прошивки тут.

Схема и прочее тут.

пятница, 7 марта 2014 г.

AVR BASIC интерпретатор

Решил сделать  миникомпьютер  для обучения программированию, и типа игрушки детям. Режим работы -интерпретатор, язык - BASIC, причем для упрощения ввода команд сделал по типу Sinclair BASIC (автоматический ввод команд одной клавишей).
[Image]

Аппаратная часть:
  • atmega328 (2кб RAM - весьма скромно, 32кб FLASH)
  • дисплей 128х64 на st7565 (вроде аналог SED1565)
  • SD карточка для сохранения программ
  • PS/2 клавиатура для ввода

Ограничения:

  • Максимальный размер программы 1400 байт или 255строк
  • Переменные только целого типа (-32768...32768), имя переменных - один символ верхнего регистра в диапазоне A ..Z
  • Для циклов переменные из диапазона A .. J 
  • Массивы 3х типов byte char и int, используется память для программы
  • Нельзя создавать новые файлы на SD, только перезаписывать существующие. Поэтому необходимо подготовить нужно кол-во файлов шаблонов по 2кб (см. папку utils) и записать их на SD card.
Комбинация клавиш
  • ESC - Прервать выполнение / Очистка командной строки (Ctrl+B для Linux console)
  • CapsLock - переключать раскладку Rus/Lat (Rus(cp1251) только для текстов или пометок)

папка проекта тут

исходники тут

Примеры программ:

Посадка на луну(псевдографика)
5 GOSUB 251
10 DIM bZ(5)
15 LET Z(0)=10
16 LET V=70
17 LET F=500
18 LET H=800
19 LET G=1
20 LET U=0
30 REM main
33 LET H=H-V
34 LET V=((V+G)*10-U*2)/10
35 LET F=F-U
36 IF F<0 THEN  LET F=0
37 LET T=H/100
38 IF T<8 THEN  LET Z(1)=7-T
39 GOSUB 225
40 GOSUB 235
41 IF H <= 0 THEN  GOTO 100
44 LET U=0
45 FOR I=0 TO 9                                            
46 LET K=INKEY
47 IF K=32 THEN  LET U=U+10
48 IF U THEN  BEEP 100,RND(20)-60
49 PAUSE 50
50 NEXT I
51 LET Z(4)=0
53 IF F=0 THEN  LET U=0
55 IF U>0 THEN  LET Z(4)=1
60 GOTO 30
100 IF V<5 THEN  GOTO 140
105 LET X=RND(3)+Z(0)-1
106 LET Y=RND(4)+4
108 AT X,Y
110 PRINT $RND(10)+32;
112 BEEP 50,RND(60)-30
115 PAUSE 100
120 GOTO 105
139 STOP
150 STOP                                                   
225 REM p
226 AT 0,0
227 PRINT "V:",V,"m/s ";
228 AT 15,0
229 PRINT "H:",H,"m ";
230 AT 0,1
231 PRINT "F:",F,"tn ";
234 RETURN
235 REM d
237 IF Z(1)>7 THEN  LET Z(1)=7
239 AT Z(2),Z(3)
240 PRINT " ";
241 AT Z(0),Z(1)
242 PRINT "A";
243 IF Z(1)>6 THEN  GOTO 248
244 AT Z(2),Z(3)+1
245 PRINT " ";
246 AT Z(0),Z(1)+1
247 IF Z(4) THEN  PRINT "*";                               
248 LET Z(2)=Z(0)
249 LET Z(3)=Z(1)
250 RETURN
251 FOR A=0 TO 20
252 AT A,RND(2)+6
253 PRINT ".";
254 NEXT A
255 RETURN
Быки и коровы

5 PRINT "Игра быки и коровы"
6 DIM bR(5)
7 DIM bK(5)
10 FOR A=0 TO 4
20 LET R(A)=RND(9)+1
30 FOR B=0 TO A-1
40 IF R(A) <> R(B) THEN  GOTO 50
45 IF A>0 THEN  GOTO 20
50 NEXT B
55 NEXT A
60 PRINT "Введите 5 чисел"
62 FOR A=0 TO 4
65 INPUT C
66 IF C<1 THEN  GOTO 70
67 IF C>9 THEN  GOTO 70
68 GOTO 73
70 PRINT "вводите от 1 до 9"
71 GOTO 65
73 LET K(A)=C
75 NEXT A                                                 
77 LET C=0
78 LET D=0
80 FOR A=0 TO 4
85 FOR B=0 TO 4
90 IF K(A) <> R(B) THEN  GOTO 100
91 IF A <> B THEN  GOTO 96
92 LET C=C+1
95 GOTO 100
96 LET D=D+1
100 NEXT B
110 NEXT A
115 PRINT "Быков:";
120 PRINT C;
124 PRINT " Коров:";
125 PRINT D
130 IF C<5 THEN  GOTO 60
140 PRINT "Угадал!"

четверг, 13 февраля 2014 г.

CubieBook - зарядка

Пришла схема контроля аккумулятора на S-8254A, пристроил ее на старую батарею (лет 5 ей, но почти не использовалась)

сразу вылезла проблема - схема не ограничивает ток заряда (она его вообще не контролирует).

Пришлось модернизировать (добавил компаратор)


схема

Сейчас при начале зарядки (когда ток большой) схема работает в импульсном режиме (частота примерно 0.5Гц) открывая и закрывая зарядной ключ

В итоге мой CubieBook держится на этой старой батареи гдето часа 3 в режиме просмотра фильма