Перейти к содержанию

2-канальный коммутатор на PIC12F675


Рекомендуемые сообщения

Сразу скажу, что собирать это устройство нельзя, т.к. нет для него рабочей прошивки. Она в разработке.

Если когда-то появится рабочий вариант, то он будет добавлен в это сообщение с подписью "ПРОШИВКА" и первое предложение будет удалено.

Так, что, если видите красный текст выше, пока не нужно задавать вопросы - "А где рабочая прошивка"?

Решил в целях познания ассемблера написать (громко сказано) программу для 2-х канального коммутатора.

Когда решил перейти на статическую раздачи искры, то сталкнулся с проблемой выбора коммутатора.

Был куплен 133.3774-03 и в дальнейшем переделан на 133.3774-02, но не понравилась его работа и нагрев.

Для начала опишу требования к программе и накидаю начальный алгоритм.

Со временем возможно всё в корне поменяется.

Требования к проекту:

1. Коммутатор должен работать как одноканальный и двухканальный.

2. Схема с минимальным кол-вом деталей и проста к повторению.

3. Есть 2 варианта работы программы. 1 - с обратной связью по току; 2 - зависимость накопления от напряжения борт.сети.

1-ый вариант мне нравится больше.

Алгоритм:
1. Настройка МК.
2. П/п ПУСК. Ждём сигнал на входах каналов.
3. Начинаем отсчёт периода и таймер накопления 6мс. и затем искрим в том же канале.
(будет задержка искры при пуске на 30об. - 0,5гр. на 370 - 6,6гр.)
4. Каждый цикл проверяем какие обороты, если больше 370, то переходим подпрограмму 370.
5. П/п работа. Начинаем считать длительность периода для следующей искры.
6. Включаем таймер накопления 4,5мс. (чтобы не было пропуска искры) и искрим в том же канале.
7. Вычитаем из предидущего периода длительность накопления которое было 4,5мс. и длительность накопления 4,5мс, которое будет
8. Включаем таймер перед накоплением.
9. Включаем таймер накопление 4,5мс. и с каждым отсчётом таймера ждём сигнал на входах каналов.
10. Искрим когда пришёл сигнал.
Когда начал писать программу, то делал её с фиксированым накоплением и сталкнулся с проблеммой при ускорении.
За полуоборот коленвала скорость вращения меняется и время накопления становится не 4,5мс. а меньше или даже не успевает включаться накопление.
Поэтому решил, что с обратной связью по току, можно будет внести поправку на ускорение.
Алгоритм с 5 пункта тогда должен быть таким:
5. П/п 370. Начинаем считать длительность периода для следующей искры.
6. Включаем таймер накопления 4,5мс. (чтобы не было пропуска искры) и искрим в том же канале.
7. Вычитаем из предидущего периода длительность накопления которое было 4,5мс. и длительность накопления 4,5мс, которое будет.
8. Включаем таймер перед накоплением.
9. Включаем накопления и включаем 2-ой счётчик "длителность накопления" ждём сигнал на входах каналов и контролируем ток.
10. Искрим когда пришёл сигнал или ток поднялся до 8А.
11. Если входной сигнал пришёл раньше чем ток поднялся, то включаем 2-ой счётчик "ускорение/замедление" и выставляем флаг "ускорение/замедление".
12. В следующем периоде проверяем флаг "ускорение/замедление" вычитаем 2-ой счётчик "ускорение/замедление".
13. Переходим в п/п РАБОТА.
11. Если ток поднялся раньше чем пришёл сигнал, то искрим и включаем 2-ой счётчик (счётчик поправки на ускорение/замедление) и убираем флаг.
12. В следующем периоде проверяем флаг ускорение/замедление и прибавляем 2-ой счётчик.
13. Переходим в п/п РАБОТА.
14. П/п РАБОТА. Начинаем считать длительность периода для следующей искры.
15. Вычитаем из предидущего периода "длителность накопления".
16. Включаем таймер перед накоплением.
17. Включаем таймер "длителность накопления" и с каждым отсчётом таймера ждём сигнал на входах каналов и контролируем ток.
18. Искрим когда пришёл сигнал или ток поднялся до 8А.
19. Если входной сигнал пришёл раньше чем ток поднялся, то включаем 2-ой счётчик "ускорение/замедление" и выставляем флаг "ускорение/замедление".
20. В следующем периоде проверяем флаг ускорение/замедление вычитаем 2-ой счётчик "ускорение/замедление".
19. Если ток поднялся раньше чем пришёл сигнал, то искрим и включаем 2-ой счётчик "ускорение/замедление" и убираем флаг "ускорение/замедление".
20. В следующем периоде проверяем флаг "ускорение/замедление" и прибавляем 2-ой счётчик "ускорение/замедление".

За отправную точку в схеме, хочу повторить схему знаменитого всем автора Шкильменского Владимира.

Это его разработка натолкнула меня на создание коммутатора.

Владимиру огромное спасибо за труд вложенный в области зажигания на МК.

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

Потом с этих подпрограм будет сложена программа.

Надеюсь, что этот проект будет доведён до конца, если не мной, то кем нибудь.

Напомню ещё раз, что этот проект в целях познания программирования на ассемблере, поэтому буду рад любой Вашей помощи.

Схема:

post-149732-0-45599800-1369058125_thumb.gif

Модель:

675U_Kom.rar

Даташит на русском к PIC12F675:

PIC12F629_675.pdf

Расположение выводов:

Проект для MPLAB IDE:

675U_proekt.rar

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

Т.к. автор молчит по поводу работы этого устройства, то желания проверять его нет.

http://mpsz.ru/forum...?do=file&id=680

обсуждение тут: http://mpsz.ru/forum...p?t=643&page=26

Ну что, поехали (не на этом коммутаторе пока)???!!! ;)

Изменено пользователем alvikagal

Авто: ВАЗ-21099, 1.5l. СЗ: ДПКВ - SECU-3T - ДКЗ от CherepVM (коммутатор статика). Топливо: бензин\пропан.

Ссылка на комментарий
Поделиться на другие сайты

Начало программы:

list p=12f675
#include <p12f675.inc>

__CONFIG _CP_OFF & _CPD_OFF & _WDT_ON & _PWRTE_ON & _BODEN_ON & _INTRC_OSC_NOCLKOUT
;====================================================
#DEFINE OUT_1 GPIO,0 ;ВЫХОД 1.4
#DEFINE OUT_2 GPIO,1 ;ВЫХОД 2.3
#DEFINE IN_1 GPIO,5 ;ВХОД _1
#DEFINE IN_2 GPIO,4 ; ВХОД _2
#DEFINE BANK0 BCF STATUS,RP0 ;ВКЛЮЧЕНИЕ БАНКА 0
#DEFINE BANK1 BSF STATUS,RP0 ;ВКЛЮЧЕНИЕ БАНКА 1
#DEFINE TMR1_ON BSF T1CON,0 ;
#DEFINE TMR1_OF BCF T1CON,0 ;
;================================================
;Определение блока констант.
CBLOCK 0X20
;================================================
Period_Lo ;Текущий период
Period_Hi
PPeriod_Lo_ ;Предидущий период
PPeriod_Hi_
ZADER_Lo ;Таймер перед накоплением
ZADER_Hi
FLAG_
T_NAK_Lo ;Время накопления
T_NAK_Hi
; FLG ;вспом флаги "1/0"
;0 -;ожидание искры/искра была
;1 - пром/самодел ДАД
;2 - рабочие/пусковые обороты
;3 - цикл искрения закончился/нет
;4 - +/- термокоррекция
;5 - +/- октанкоррекция
;6 - замедление/ускорение
;7 - оборот чётный/нечётный
;===============================================
ENDC
;================================================
; Program
Org 0x0000
GOTO START
GOTO START
GOTO START
GOTO START
; INterrupt-Vector
Org 0x0004
RETURN
;========================================================
;ПЕРВОНАЧАЛЬНАЯ НАСТРОЙКА
START
BANK0
CLRF GPIO ;сброс порта
MOVLW B'00000111'
MOVWF CMCON
MOVLW b'00000001' ;такт ТМР1 - 1мксек
MOVWF T1CON
BANK1
MOVLW B'00111100' ;GP2 ,GP4 - ВХОД; GP0,GP1- ВЫХОД
MOVWF TRISIO
MOVLW B'00000100' ;GP0, GP1, GP5, GP4 - ЦИФРОВОЙ IN / OUT
MOVWF ANSEL
CLRWDT ;ОЧИСТКА ПРЕДДЕЛИТЕЛЯ И WDT
CLRF TMR0 ;ОЧИСТКА TMR0
MOVLW B'11101010' ;КОЭФ. ДЕЛЕНИЯ ПРЕДДЕЛИТЕЛЯ 1:4 (Тwdt =18мс*4)
MOVWF OPTION_REG ;ПРЕДДЕЛИТЕЛЬ ПОДКЛЮЧЕН К WDT
CALL 3FF ;КАЛИБРОВКА ТАКТОВОГО ГЕНЕРАТОРА
MOVWF OSCCAL
GOTO Poisk

Настройку МК и переменные немного позже нужно будет подправить.

Оставил TMR0 его планиру использовать для счётчика "ускорение/замедление", но нужно будет с ним разобраться.

П/программа пуска.

Ждём спад в общем канале:

Poisk
CLRWDT
BTFSC IN_1
GOTO $-1
BANK0
CLRF TMR1H;сброс счётчика периода
CLRF TMR1L
CLRWDT
BTFSC IN_2
GOTO Channel_1
GOTO Channel_2

Я так думаю, что лучше для подсчёта периода использовать TMR1?

Изменено пользователем alvikagal

Авто: ВАЗ-21099, 1.5l. СЗ: ДПКВ - SECU-3T - ДКЗ от CherepVM (коммутатор статика). Топливо: бензин\пропан.

Ссылка на комментарий
Поделиться на другие сайты

Че то пока одни непонятки. Нужно бы хоть вкратце: назначение. Что хотим заполучить?

Для чего на входе сигналы складываем, чтобы на выходе их опять разделить?

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

Сравнительное тестирование аккумуляторов EVE Energy и Samsung типоразмера 18650

Инженеры КОМПЭЛ провели сравнительное тестирование аккумуляторов EVE и Samsung популярного для бытовых и индустриальных применений типоразмера 18650. 

Для теста были выбраны аккумуляторы литий-никельмарганцевой системы: по два образца одного наименования каждого производителя – и протестированы на двух значениях тока разряда: 0,5 А и 2,5 А. Испытания проводились в нормальных условиях на электронной нагрузке EBD-USB от ZKEtech, а зарядка осуществлялась от лабораторного источника питания в режиме CC+CV в соответствии с рекомендациями в даташите на определенную модель. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Здравствуйте все!

Не ожидал новой темы, право слово. Но раз уж началась, покашляю немного и здесь.

Есть пару предложений по схеме.

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

Второе предложение: уменьшить сопротивление датчика тока катухи хотя бы вдвое. Что благотворно скажется на холодном зимнем пуске при слабом аккуме, когда каждый вольт батареи на счету. А на ДТ при 7...8А тока завалится 0,7...0,8В - многовато, как с моей колокольни. Мысль и предложение, в принципе, не моё. Но я ёё поддерживаю.


 

Ссылка на комментарий
Поделиться на другие сайты

Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. 

Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств. Подробнее параметры и результаты тестов новой серии PLM по ссылке.

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

При пуске не планировал вообще контролировать ток. Просто нормированное накопление 6мс. до 370 оборотов. Ток будет даже немного меньше, чем 8А раза в 2 наверно.

С пуском наверно будет самое сложно разобраться, поэтому решил пока его не трогать, а сразу перейти к рабочей программе. Возможно делаю не правильно, но считатю, что главное разобраться с ускорением и с замедлением. Тут для меня появились сложности.

Насчёт каналов, просто у меня эта схема собрана и на ней смогу проверять на авто.

Общий канал, может работать как один канал коммутатора. Объединил каналы потому, что проще считать по одному каналу полупериоды, а на втором ловить спад и переключатся по нему.

Сообщении №2 подправил.

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

Я думал над таким вариантом и пришёл к выводу, что код программы будет короче, если объединить каналы и считать только в одном.

Второе предложение: уменьшить сопротивление датчика тока катухи хотя бы вдвое. Что благотворно скажется на холодном зимнем пуске при слабом аккуме, когда каждый вольт батареи на счету. А на ДТ при 7...8А тока завалится 0,7...0,8В - многовато, как с моей колокольни. Мысль и предложение, в принципе, не моё. Но я ёё поддерживаю.

До какого сопротивления уменьшить? 0,01Ом.?

Изменено пользователем alvikagal

Авто: ВАЗ-21099, 1.5l. СЗ: ДПКВ - SECU-3T - ДКЗ от CherepVM (коммутатор статика). Топливо: бензин\пропан.

Ссылка на комментарий
Поделиться на другие сайты

Литиевые батарейки и аккумуляторы от мирового лидера  EVE в Компэл

Компания Компэл, официальный дистрибьютор EVE Energy, бренда №1 по производству химических источников тока (ХИТ) в мире, предлагает продукцию EVE как со склада, так и под заказ. Компания EVE широко известна в странах Европы, Америки и Юго-Восточной Азии уже более 20 лет. Недавно EVE была объявлена поставщиком новых аккумуляторных элементов круглого формата для электрических моделей «нового класса» компании BMW.

Продукция EVE предназначена для самого широкого спектра применений – от бытового до промышленного. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

До какого сопротивления уменьшить? 0,01Ом.?

А почему не применять (и в подобных схемах) стандартные шунты?

На измерительных выводах падение U при номинальном токе всегда будет 75 mv.

Ссылка на комментарий
Поделиться на другие сайты

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

Не хотелось бы усложнять.

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

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

Нужны мысли по самой программе и алгоритму.

Подправить выложенный код настройки МК и поиска спада, чтобы можно было идти дальше.

Изменено пользователем alvikagal

Авто: ВАЗ-21099, 1.5l. СЗ: ДПКВ - SECU-3T - ДКЗ от CherepVM (коммутатор статика). Топливо: бензин\пропан.

Ссылка на комментарий
Поделиться на другие сайты

До какого сопротивления уменьшить? 0,01Ом.?

Не-е, я ж писал " вдвое", то есть до 0,05ом. При таком сопротивлении падение на ДТ будет не таким уж большим. И в то же время эту напругу можно будет отследить то ли АЦП, то ли компаратором.

Кстати, ещё одно замечание. Я его нигде не высказывал, но раз уж открылась тема целевая - высскажу здесь. Формировать нормированное время накопления не совсем айс, особенно для низкоомных катух и контролировать напругу на ДТ посредством АЦП (относительно низкоскоростное устройство в среднем семействе ПИК) тоже не внушает недоверия - нужно угадать с моментом замера.

Насчёт стандартных шунтов. Падение на нём совсем уж маловато. При 10-амперном шунте на нём завалится 75мВ, так? Дискретность АЦП при 8-битном замере = 0, 0195В. Таким образом, при 10А тока АЦП покажет 3...4 единицы/дискреты. Плюс/минус ошибки при замере - в результате выходная длительность может значительно исказиться. Конечно, можно использовать все 10-бит АЦП, тогда прога "растянется".

В общем, надо анализировать и размышлять.

Изменено пользователем IGO61


 

Ссылка на комментарий
Поделиться на другие сайты

Насчёт стандартных шунтов. Падение на нём совсем уж маловато. При 10-амперном шунте на нём завалится 75мВ, так?

В общем, надо анализировать и размышлять.

Так. Это если размышлять в привычном (для шунта) применении. У нас все во много (по времени) раз короче,

поэтому и шунты нужно применять с перегрузом в два, а то и в четыре раза и больше. Не (допустим) 100А, а только 10А.

Соответственно и падение на нем получится в два, в четыре или в десять раз больше .

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

Вот в принципе программа пуска:

list	 p=12f675		
#include <p12f675.inc>	

__CONFIG _CP_OFF & _CPD_OFF & _WDT_ON & _PWRTE_ON & _BODEN_ON & _INTRC_OSC_NOCLKOUT
;====================================================
#DEFINE OUT_1 GPIO,0 ;ВЫХОД 1.4
#DEFINE OUT_2 GPIO,1 ;ВЫХОД 2.3
#DEFINE IN_1 GPIO,5 ;ВХОД _1
#DEFINE IN_2 GPIO,4 ; ВХОД _2
#DEFINE BANK0 BCF STATUS,RP0 ;ВКЛЮЧЕНИЕ БАНКА 0
#DEFINE BANK1 BSF STATUS,RP0 ;ВКЛЮЧЕНИЕ БАНКА 1
#DEFINE TMR1_ON BSF T1CON,0 ;
#DEFINE TMR1_OF BCF T1CON,0 ;
;================================================
;Определение блока констант.
CBLOCK 0X20
;================================================
Period_Lo ;Текущий период
Period_Hi
PPeriod_Lo_ ;Предидущий период
PPeriod_Hi_
ZADER_Lo ;Таймер перед накоплением
ZADER_Hi	
FLAG_
T_NAK_Lo ;Время накопления
T_NAK_Hi
; FLG ;вспом флаги "1/0"
;0 -;ожидание искры/искра была
;1 - пром/самодел ДАД
;2 - рабочие/пусковые обороты
;3 - цикл искрения закончился/нет
;4 - +/- термокоррекция
;5 - +/- октанкоррекция
;6 - замедление/ускорение
;7 - оборот чётный/нечётный
;===============================================
ENDC
;================================================
; Program
Org 0x0000
GOTO START
GOTO START
GOTO START
GOTO START
; INterrupt-Vector
Org 0x0004
RETURN
;========================================================
;ПЕРВОНАЧАЛЬНАЯ НАСТРОЙКА
START
BANK0
CLRF GPIO	 ;сброс порта
MOVLW B'00000111'
MOVWF CMCON
MOVLW b'00000001' ;такт ТМР1 - 1мксек
MOVWF T1CON
BANK1
MOVLW B'00111100' ;GP2 ,GP4 - ВХОД; GP0,GP1- ВЫХОД
MOVWF TRISIO
MOVLW B'00000100' ;GP0, GP1, GP5, GP4 - ЦИФРОВОЙ IN / OUT
MOVWF ANSEL
CLRWDT	 ;ОЧИСТКА ПРЕДДЕЛИТЕЛЯ И WDT
CLRF	 TMR0				 ;ОЧИСТКА TMR0
MOVLW B'11101010'	 ;КОЭФ. ДЕЛЕНИЯ ПРЕДДЕЛИТЕЛЯ 1:4 (Тwdt =18мс*4)
MOVWF OPTION_REG ;ПРЕДДЕЛИТЕЛЬ ПОДКЛЮЧЕН К WDT
CALL	 3FF					 ;КАЛИБРОВКА ТАКТОВОГО ГЕНЕРАТОРА
MOVWF OSCCAL
GOTO Poisk
;*************************************************************************
;настройка после всех видов сброса контроллера			
; режим запуска двигателя и выход двигателя в режим менее 450 об/мин
;*************************************************************************	
Poisk
CLRWDT
BANK0
CLRF TMR1H;сброс счётчика периода
CLRF TMR1L
BTFSC IN_1
GOTO $-1
BTFSC IN_2
GOTO Channel_1
GOTO Channel_2
Channel_2
BSF OUT_2
BANK0
CLRF TMR1H;сброс счётчика периода
CLRF TMR1L
TMR1_ON
CLRWDT
MOVLW 0x09
MOVWF T_NAK_Hi
MOVWF T_NAK_Lo ; время накопления 4,5мс
DECFSZ T_NAK_Lo
GOTO $-1
DECFSZ T_NAK_Hi
GOTO $-3
BCF OUT_2
GOTO Poisk
Channel_1
BSF OUT_1
BANK0
CLRF TMR1H;сброс счётчика периода
CLRF TMR1L
TMR1_ON
CLRWDT
MOVLW 0x09
MOVWF T_NAK_Hi
MOVWF T_NAK_Lo ; время накопления 4,5мс
DECFSZ T_NAK_Lo
GOTO $-1
DECFSZ T_NAK_Hi
GOTO $-3
BCF OUT_1
GOTO Poisk
;++++++++++++++++++++++++
ORG H'03FF'
retlw H'C0'
ORG H'2100'
	 DE "2-х канальный коммутатор на PIC12F675 20.05.13 alvikagal с регулировкой тока "
	 END

Добавил в первый пост проект для MPLAB IDE.

Пока работает накопление 6мс. по спаду, т.е. задержка искры при пуске.

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

Теперь нужно написать п/программу работы.

Изменено пользователем alvikagal

Авто: ВАЗ-21099, 1.5l. СЗ: ДПКВ - SECU-3T - ДКЗ от CherepVM (коммутатор статика). Топливо: бензин\пропан.

Ссылка на комментарий
Поделиться на другие сайты

Возможно я не прав, но я не встречал НШ меньше 10А. В случае 10-амперного стандартного шунта на нём и завалится 75мВ при 10 амперах.

Можно сделать "ход конём" - использовать НШ 10А, а АЦП перенастроить на "правое выравнивание", после замера считывать младший байт результата из МК, тогда дискретность будет в 4 раза выше. Не 0,0195В, а 0,004875мВ. А это уже кое-что. И точность не пострадает - ну это так мысли вслух, такого я ещё не пробовал с АЦП.

Изменено пользователем IGO61


 

Ссылка на комментарий
Поделиться на другие сайты

Вот модель для Proteus, если кто хочет посмотреть, что получается:

Модель 20.05.13.rar

Авто: ВАЗ-21099, 1.5l. СЗ: ДПКВ - SECU-3T - ДКЗ от CherepVM (коммутатор статика). Топливо: бензин\пропан.

Ссылка на комментарий
Поделиться на другие сайты

По П/П пуска в №10.

Для перехода в рабочий режим нужно как-то сохранять измеренный период для его дальнейшей обработки. Пока таймер крутится "сам на себя", периодически сбрасываясь. Команда "GOTO Channel_2" - пустая, не несёт никакой смысловой и физической нагрузки, так как следом за ней и следует П/П "Channel_2".

Ещё одна "пустая команда" в настройках МК - "CLRF TMR0". Так как мы работаем в "Банке 1", то произойдёт очистка не таймера, а регистра "OPTION_REG". И сразу за этой командой следует процедура загрузки в тот же регистр "OPTION_REG" настроечной константы.

Пока как-то так. Не много критики с моей стороны?

Для компенсации выкладываю архив со своими наработками одноканального коммутатора из темы "ФУОЗ+ДПКВ". Там не всё, но кое-что.

675_kom.zip


 

Ссылка на комментарий
Поделиться на другие сайты

По П/П пуска в №10.

Для перехода в рабочий режим нужно как-то сохранять измеренный период для его дальнейшей обработки. Пока таймер крутится "сам на себя", периодически сбрасываясь. Команда "GOTO Channel_2" - пустая, не несёт никакой смысловой и физической нагрузки, так как следом за ней и следует П/П "Channel_2".

Да, я ещё добавлю команды сохранения счётчика TMR1 и проверку на обороты.

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

Спасибо Игорь.

CLRF TMR0 можно удалить?

Я его в будущем хотел использовать как второй таймер, для ускорения/замедления.

Можно конечно и по одному таймеру считать вычитая разницу.

Посмотрел твой исходник, мне пока ещё сложно понимать не подписание команды.

Так что я долго вникать буду.

Изменено пользователем alvikagal

Авто: ВАЗ-21099, 1.5l. СЗ: ДПКВ - SECU-3T - ДКЗ от CherepVM (коммутатор статика). Топливо: бензин\пропан.

Ссылка на комментарий
Поделиться на другие сайты

Пока в пуске будет так:

Channel_1
BSF OUT_1
MOVF TMR1L,W;длительность периода
MOVWF Period_Lo ;сохранить в переменную
MOVF TMR1H,W
MOVWF Period_Hi
BANK0
CLRF TMR1H;сброс счётчика периода
CLRF TMR1L
TMR1_ON
CLRWDT
MOVLW 0x09
MOVWF T_NAK_Hi
MOVWF T_NAK_Lo ; время накопления 4,5мс
DECFSZ T_NAK_Lo
GOTO $-1
DECFSZ T_NAK_Hi
GOTO $-3
BCF OUT_1
GOTO Poisk

Изменено пользователем alvikagal

Авто: ВАЗ-21099, 1.5l. СЗ: ДПКВ - SECU-3T - ДКЗ от CherepVM (коммутатор статика). Топливо: бензин\пропан.

Ссылка на комментарий
Поделиться на другие сайты

Если планируешь в дальнейшем использовать "таймер 0", команда очистки всё равно пустая. Причин две.

1).Команда " CLRF TMR0" находится в банке 1, а должна быть в нулевом.

2).Если TMR0 тактируется внутренним генератором, то таймер нельзя остановить - он считает постоянно. А перед началом замера в нужное время его можно сбросить/очистить. Вот тогда-то и надо ставить в/у команду.

Да, в моём исходнике коментов почти нет - это был промежуточный этап для сбора наработок. Чтоб можно было двигаться дальше.

Изменено пользователем IGO61


 

Ссылка на комментарий
Поделиться на другие сайты

Игорь, ты TMR1 сделал делитель 8

MOVLW B'00110100' ;ТАКТ ТМ1=Fcc/8

MOVWF T1CON

Я сделал 1:1

Счётчика TMR1 на малых оборотах не хватает. Если 1:1, то это 65535 мкс, а 30 оборотов - 1000мс.

Если брать делитель счётчика 1:8, то 524280 мкс.

Нужно флаг переполнения поднимать?

Авто: ВАЗ-21099, 1.5l. СЗ: ДПКВ - SECU-3T - ДКЗ от CherepVM (коммутатор статика). Топливо: бензин\пропан.

Ссылка на комментарий
Поделиться на другие сайты

Вернее проверять переполнение BTFSS PIR1,TMR1IF;переполн?

Авто: ВАЗ-21099, 1.5l. СЗ: ДПКВ - SECU-3T - ДКЗ от CherepVM (коммутатор статика). Топливо: бензин\пропан.

Ссылка на комментарий
Поделиться на другие сайты

Если при делителе 1:1 переполняется счётчик - сделай делитель побольше (максимум для ПИКа - 1:8). Но на 30об/мин таймер всё равно переполнится.

Флаг переполнения TMR1 поднимется сам при медленном вращении и переполнении счётчика. Его нужно обработать по своему усмотрению и перед началом следующего замера сбросить програмно (он сам не сбрасывается). Не сильно упирайся в 30об/мин - это жесткАч. Легче будет строить программу от примерно 60об/мин и выше.


 

Ссылка на комментарий
Поделиться на другие сайты

Пока только таким образом получилось сохранять таймер и проверять обороты:

START
   BANK0
CLRF GPIO	   ;сброс порта
MOVLW B'00000111'
MOVWF   CMCON
MOVLW B'00110100' ;ТАКТ ТМ1=Fcc/8=8мкс
MOVWF T1CON
BANK1 
MOVLW B'00111100'   ;GP2 ,GP4 -  ВХОД;  GP0,GP1-  ВЫХОД
MOVWF TRISIO
MOVLW B'00000100'    ;GP0, GP1, GP5, GP4 -  ЦИФРОВОЙ   IN / OUT
MOVWF    ANSEL
CLRWDT    ;ОЧИСТКА ПРЕДДЕЛИТЕЛЯ И WDT
MOVLW B'10000011'   ; 
MOVWF OPTION_REG  ;
CALL	   3FF					   ;КАЛИБРОВКА ТАКТОВОГО ГЕНЕРАТОРА
MOVWF   OSCCAL
   BANK0
CLRF TMR1H ;сброс счётчика периода
CLRF TMR1L
TMR1_ON
GOTO Pusk
;*************************************************************************		  
; режим запуска двигателя
;*************************************************************************	   
Pusk
CLRWDT
BTFSC  IN_1
GOTO $-2
BTFSC  IN_2
GOTO Channel_1
GOTO Channel_2
Channel_1
BSF  OUT_1
MOVF TMR1L,W  ;длительность периода
MOVWF Period_Lo ;сохранить в переменную
MOVF TMR1H,W
MOVWF Period_Hi
TMR1_OF
   BANK0
CLRF TMR1H ;сброс счётчика периода
CLRF TMR1L
BCF PIR1,TMR1IF;сброс флага переполн.
TMR1_ON
MOVLW 0x09
MOVWF T_NAK_Hi
MOVWF T_NAK_Lo   ;время накопления 6мс 
DECFSZ T_NAK_Lo
GOTO $-1
DECFSZ T_NAK_Hi
GOTO $-3
BCF  OUT_1
MOVF Period_Hi,W	   
SUBLW 0x25				  ;370 об/мин			  
BTFSC STATUS,C
GOTO Rabota
GOTO Pusk

Правильно ли сделал эту часть?

Теперь пока сделаю фиксированное накопление в рабочем режиме, а потом нужно будет его длительность заменить на длительность отключения по току.

Авто: ВАЗ-21099, 1.5l. СЗ: ДПКВ - SECU-3T - ДКЗ от CherepVM (коммутатор статика). Топливо: бензин\пропан.

Ссылка на комментарий
Поделиться на другие сайты

Делаю переход с пускового режима в работу.

По приходу спада накопление и искра, копирую счетчик накопления и из предыдущего периода вычитаю счетчик накопления 2 раза - получаю задержку. Ее умножаю на 2 и включаю таймер задержки перед накоплением.

Что-то не выходит правильно.

Авто: ВАЗ-21099, 1.5l. СЗ: ДПКВ - SECU-3T - ДКЗ от CherepVM (коммутатор статика). Топливо: бензин\пропан.

Ссылка на комментарий
Поделиться на другие сайты

Если по спаду накопление и искра. То будет задержка на время накопления. Мне кажется нужно как коммутатор по фронту накопление, по спаду искра. Но если длительность ВУ импульса будет больше времени накопления то будет греться транзистор и катушка.

Ссылка на комментарий
Поделиться на другие сайты

Это просто переход. В работе будет искра по спаду.

Авто: ВАЗ-21099, 1.5l. СЗ: ДПКВ - SECU-3T - ДКЗ от CherepVM (коммутатор статика). Топливо: бензин\пропан.

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...