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

управление БП через оптрон + PIC16F628A


Пентагрид

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

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

О-о-о Месье знает толк в извращениях.... :)

@Пентагрид  вытрите нафик простыню: ";ПОДПРОГРАММА REF (пересчёт reg->VRCON)"

У вас reg изменяется от 0 до 24 , тупо создайте массив на 25 элементов и пользуйтесь reg как индексом массива

вся процедура займет 8-10 строк кода.

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

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

Выбираем схему BMS для заряда литий-железофосфатных (LiFePO4) аккумуляторов

Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей. Подробнее>>

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

что как? создать массив? 'это просто, он у вас маленький, поэтому без хитрых заморочек,  чтобы не попасть на переход блоков по 256 слов, помещаем его в начало кода сразу после команды goto start,.

;******************************
; таблица перекодировки
;******************************
ORG	0x010
massiv: 
    ADDWF	PCL, 1
    RETLW  	B'11100000'	;0
    RETLW  	B'11100001'	;1
    RETLW  	B'11100010'	;2
    RETLW  	B'11100011'	;3
    RETLW  	B'11100100'	;4
; и тд
;......
;......
;......
    RETLW  	B'11101111'	;24
end_massiv:
;*******************************

и обращаемся к нему так

  movf reg,w ; помещаем индекс элемента массива в аккумулятор W
  call massiv ; 
 ; по выходу из процедуры
 ; в аккумуляторе W нужное значение

в итоге нужный результат будет получен за 6 машинных циклов (команд)

для полного понимания читаем апнот AN556

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

@IMXO , большое спасибо, что просветили насчёт этого способа! Жизнь станет намного легче.

 

Скрытый текст

IBP.thumb.GIF.9f922d1c40a737ad7c586d81584257be.GIF

 

 

cyclebutton-xorlw-0_24_massiv.rar

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

также не понял, накой нужна "подпрограмма OS", если ногодрыг компараторов можно настроить хардварно включив 6-ой режим компараторов, оно само будет работать без всяких проверок.

cmcon.png.5e3c7aec5e6665afa48b03e03c0bd5b4.png

Скрытый текст

;************************************************
;   Тест работы компаратора и ИОН   *
;   в PIC16F628A.                             *
;************************************************
	list      p=16f628A           ; list directive to define processor
	#include <p16F628A.inc>       ; processor specific variable definitions

	errorlevel  -302              ; suppress message 302 from list file

	__CONFIG   _CP_OFF & DATA_CP_OFF & _LVP_OFF & _BOREN_OFF & _MCLRE_ON & _WDT_OFF & _PWRTE_ON & _INTOSC_OSC_NOCLKOUT 

;#define 
;***** VARIABLE DEFINITIONS
w_temp        EQU     0x7E        ; variable used for context saving 
status_temp   EQU     0x7F        ; variable used for context saving

;**********************************************************************
	ORG     0x000  
      call  init          
	goto    main             
	

	ORG     0x004             ; interrupt vector location
	movwf   w_temp            ; save off current W register contents
	movf	STATUS,w          ; move status register into W register
	movwf	status_temp       ; save off contents of STATUS register

	movf    status_temp,w     ; retrieve copy of STATUS register
	movwf	STATUS            ; restore pre-isr STATUS register contents
	swapf   w_temp,f
	swapf   w_temp,w          ; restore pre-isr W register contents
	retfie                    ; return from interrupt
;**********************************************************
init:
       clrf INTCON
      banksel PIE1
       clrf PIE1
      banksel PORTA
       clrf PORTA
       clrf PORTB 
       movlw (0<<CIS)|(0<<C1INV)|(0<<C2INV)|(.6<<CM0); 6-ой режим (CM2:CM0=110)
       movwf CMCON
      banksel TRISA
       movlw (1<<RA7)|(1<<RA6)|(1<<RA2)|(1<<RA1)|(1<<RA0)
       movwf TRISA
       clrf TRISB
       movlw (1<<VREN)|(1<<VROE)|(1<<VRR)|(.3<<VR0) 
       movwf VRCON 
      
end_init: return
;**********************************************************
main:
      
    	goto	main		  ;loop forever, remove this instruction, for test only

	END                       ; directive 'end of program'

 

 

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

@Пентагрид Оптопара низкочастотная, может просто не успеть отработать импульс, надо на вкл выдавать импульс периода минимум 100 мкс

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

В 05.06.2019 в 21:34, IMXO сказал:

накой нужна "подпрограмма OS"

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

В 05.06.2019 в 22:18, РадиоНастройщик сказал:

надо на вкл выдавать импульс периода минимум 100 мкс

Довезу бандуру до осциллографа и проверю этот вариант. Так вроде работает.

 

В 06.06.2019 в 00:04, IMXO сказал:

зачем? вся эта канитель

Можно развить это дело, поставить какой-нибудь 877A с несколькими АЦП и... :

1) запилить особый алгоритм для зарядки разных аккумуляторов в зависимости от типа, возраста и т.п.;

2) программно-управляемый стабилизатор для чего угодно (гальванических ванн, электролизеров);

3) прототипы чего-нибудь с особым законом регулирования (например, ПИД-регулятор для паяльника);

4) собрать автоматический "сниматель ВАХ" радиоламп безо всяких килограммовых трансформаторов, подружить его с ПК по USART, чтобы графики сохранять.

 

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

1 час назад, IMXO сказал:

школьных обработчиков кнопок и хардварных костылей к ним

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

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

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

да собственно нет никаких архивов,  кое-что есть на форуме  микротельных , кое-что осталось на их старом сайте

по кнопкам здесь http://www.microchip.su/showthread.php?p=239079#post239079

 русская документация здесь  http://www.microchip.ru/lit/?mid=1x0 , но думаю вы и сами это знаете.

 

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

33 минуты назад, IMXO сказал:

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

Я вообще не писал на асме ) только некоторые команды .

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

Есть подозрение что новые чипы от микрочип изменили внутреннюю структуру , что и привело к этому.

Микроконтроллер pic18f1320.

Что может быть лучше в радиоэлектронике, чем программирование микроконтроллеров ?

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

2 часа назад, Пентагрид сказал:

Просветите

ну на примере вышей схемы, вангую кнопка типа такой

7cf1963963dd474d9c403c8e1a1c02e9_ecbd2100295211e5a5bf78e7d1ddc3dc.jpg

 

,вы что-бы погасить дребезг контактов кнопки повесили на нее конденсатор 10нф , кнопка имеет сопротивление 50мОм , еще 10-30мОм на проводниках , конденсатор заряжен до 5в итого в момент замыкания через кнопку идет импульс тока 60-80А, он из-за индуктивности проводников несколько меньше и длительность его мала , а кнопка максимум рассчитана на 50мА , понемногу подгорает,  увеличивается дребезг и начинает глючить. те чтобы снизить импульсный ток  конденсатора последовательно с кнопкой еще надо и резистор на 100-150ом поставить.

если убрать конденсаторы  ваш алгоритм однозначно будет ловить дребезг тк весь ваш код выполняется за 50-100мкс , а дребезг длится 1-10мс в зависимости от г...ти кнопки.

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

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

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

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

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

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

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

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

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

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

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