Cчет импульсов
|
|
holyuser |
Дата: Чт, 29.05.2008, 13:45 | Сообщение # 196 |
Группа:
Проверенные
Ранг:
Могу и подсказать
Сообщений:
228
Замечания:
±
На сайте с 12.12.2007
Статус:
Offline
|
Делал когда-то на PIC16F688, думаю разница небольшая будет.
|
|
|
|
DeveloperX |
Дата: Чт, 29.05.2008, 13:49 | Сообщение # 197 |
Группа:
Пользователи
Ранг:
Могу и подсказать
Сообщений:
149
Замечания:
±
На сайте с 25.10.2007
Статус:
Offline
|
Quote (holyuser) Делал когда-то на PIC16F688, думаю разница небольшая будет. какая там схема была? и код желательно на пикбасике.
|
|
|
|
holyuser |
Дата: Чт, 29.05.2008, 14:03 | Сообщение # 198 |
Группа:
Проверенные
Ранг:
Могу и подсказать
Сообщений:
228
Замечания:
±
На сайте с 12.12.2007
Статус:
Offline
|
Это у меня на старом компе осталось, поищу, как только время будет.
|
|
|
|
evgenb |
Дата: Чт, 29.05.2008, 20:33 | Сообщение # 199 |
Группа:
Проверенные
Ранг:
Понимаю
Сообщений:
91
Замечания:
±
На сайте с 14.09.2007
Статус:
Offline
|
DeveloperX Посмотрите такое решение вольтметра, может сгодится. http://slil.ru/25844527 Напряжение снимается с потенциометра RV2. Графический движок можно исключить. Успехов.
|
|
|
|
DeveloperX |
Дата: Пт, 30.05.2008, 09:54 | Сообщение # 200 |
Группа:
Пользователи
Ранг:
Могу и подсказать
Сообщений:
149
Замечания:
±
На сайте с 25.10.2007
Статус:
Offline
|
evgenb, а кода на пикбасике нет? вот нашел в интернете схему вольтметра 0-100В, но без кода на пикбасике. Мож кто-нить поможет мне с кодом??? Вот алгоритм работы АЦП из Справочника по пик-микроконтроллерам Майкла Предко: 1. Конфигурировать порты, записав соответствующий код в регистр ADCON1. 2. Загрузить соотв. код в регистр ADCON0 для включения АЦП путём установки бита ADON, сброса битов ADIF и GO/_DONE. 3. Ждать, когда установится напряжение входного аналогового сигнала. 4. Запустить преобразование, установив бит GO/_DONE. 5. Производить периодический опрос бита GO/_DONE до тех пор, пока он не будет сброшен. 6. Считать результат из регистра ADRES. Ничего не понятно!!! а вот схемка по-проще! вот полностью статья http://www.coolcircuit.com/project/meter/index.html и исходный код на С: http://www.coolcircuit.com/project/meter/meter.zip а вот куски кода из форума http://www.picbasic.org/forum/showthread.php?t=2633 Code ' A digital voltmeter, using the on-board ADC DEVICE = 16F877 XTAL = 4 ADIN_RES = 10 ' 10-bit result required ADIN_TAD = FRC ' RC OSC chosen ADIN_DELAY = 50 ' Allow 50us sample time DIM RAW AS WORD DIM VOLTS AS FLOAT SYMBOL QUANTA = 5.0 / 1024 ' Calculate the quantasising value CLS TRISA = %00000001 ' Configure AN0 (PORTA.0) as an input ADCON1 = %10000000 ' Set analogue input on PORTA.0 AGAIN: RAW = ADIN 0 VOLTS = RAW * QUANTA PRINT AT 1,1,DEC2 VOLTS,"V " GOTO AGAIN или вот ещё Code device 16f676 CONFIG INTRC_OSC_NOCLKOUT, WDT_OFF, PWRTE_ON,MCLRE_OFF,CP,CPD trisa = 1 'select porta.0 for input ADCON0 = %10000001 ' right justified result from a/d channel 0 ANSEL = 00000001 ' SELECT ANALOGUE ON PORTA.0 ADCON1 = %00010000 ' USE INTERNAL FOSC/8 ADIN_STIME 100 ' ALLOW 100US SETTLE TIME DIM RAW AS WORD DIM VOLTS AS FLOAT SYMBOL QUANTA = 4.9 / 1024 ' CALCULATE THE QUANTASISING VALUE remember not quite 5volts on my pic!! OUTPUT PORTC SYMBOL LED1 = PORTC.0 SYMBOL LED2 = PORTC.1 SYMBOL LED3 = PORTC.2 SYMBOL LED4 = PORTC.3 SYMBOL BEEP = PORTC.4 DELAYMS 500 HIGH PORTC DELAYMS 1000
START: RAW = ADIN 0 VOLTS = RAW * QUANTA
etc etc etc можно ли это как-нибудь использовать???
Сообщение отредактировал
DeveloperX - Пт, 30.05.2008, 12:38
|
|
|
|
evgenb |
Дата: Вс, 01.06.2008, 21:16 | Сообщение # 201 |
Группа:
Проверенные
Ранг:
Понимаю
Сообщений:
91
Замечания:
±
На сайте с 14.09.2007
Статус:
Offline
|
Quote (DeveloperX) evgenb, а кода на пикбасике нет? Надо писать. Блок АЦП приведен в последнем примере, а вывод на 7-ми сегментный индикатор приводился ранее. Сложите, и в перед.
|
|
|
|
DeveloperX |
Дата: Ср, 04.06.2008, 09:27 | Сообщение # 202 |
Группа:
Пользователи
Ранг:
Могу и подсказать
Сообщений:
149
Замечания:
±
На сайте с 25.10.2007
Статус:
Offline
|
Quote (evgenb) Сложите, и в перед. ЛЕГКО СКАЗАТЬ!!! Добавлено (04.06.2008, 3:27:06) --------------------------------------------- размышляя о АЦП вспомнил, что на входе АЦП не может быть более Vdd, т.е. 5 вольт!!! на некоторых схемах описано построение некоего делителя, если требуется измерить больше чем Vdd!!! судя по описанию, на приведённой выше схеме напряжение делится более чем на 3, т.о. максимально можно подать на АЦП 15.64V!!! или вот схема с делителем может ли кто-нибудь объяснить как работает этот делитель и как в программе это должно быть отражено??????? вот нашёл код программы для 16ф677. Code Device = 16F677 XTAL = 8 REMINDERS = false Config MCLRE_OFF,WDT_OFF,INTRC_OSC_NOCLKOUT,BOD_ON,PWRTE_ON,FCMEN_OFF,IESO_OFF REMINDERS = true
OSCCON = %01110111 'This is necessary to configure the internal oscillator
TRISA = %11111111 ' Configure AN0 (PORTA.0) as an input
Declare LCD_INTERFACE 4 Declare LCD_DTPIN PORTB.4 Declare LCD_ENPIN PORTC.6 Declare LCD_RSPIN PORTC.7 Declare LCD_LINES 2
ADCON0 = %10000001 ' Right justify the result ANSEL = %00000001 'make AN0 an analog input. All others digital ANSELH = %00000000
ADIN_RES = 10 ' 10-bit result required ADIN_TAD = FRC ' RC OSC chosen ADIN_STIME = 50 ' Allow 50us sample time **This originally said ADIN_DELAY
Dim ad16 As Word Dim i As Word Dim VOLTS As Float Symbol QUANTA = 5.0*16 / (65535 ) ' Calculate the quantasising value
Cls AGAIN: ad16 = 0 For i = 0 To 63 'must be 64 times ad16 = ad16 + ADIn 0 Next i
VOLTS = ad16 * QUANTA Print At 1,1,DEC5 VOLTS,"V " Print At 2,1,"volt"
DelayMS 50 GoTo AGAIN Подойдёт ли он к 16ф676??? облом! код для протона!!! в моём MicroCode Studio PicBasic Pro 2.47 нет процессора pic16f676!!! Как компилировать??? в хелпе по команде ADCIN есть примерчик: Code DEFINE ADC_BITS 8 ' Set number of bits in result DEFINE ADC_CLOCK 3 ' Set clock source (rc = 3) DEFINE ADC_SAMPLEUS 50 ' Set sampling time in microseconds
TRISA = 255 ' Set PORTA to all input ADCON1 = 2 ' PORTA is analog ADCIN 0, B0 ' Read channel 0 to B0
Сообщение отредактировал
DeveloperX - Ср, 04.06.2008, 10:16
|
|
|
|
holyuser |
Дата: Ср, 04.06.2008, 10:23 | Сообщение # 203 |
Группа:
Проверенные
Ранг:
Могу и подсказать
Сообщений:
228
Замечания:
±
На сайте с 12.12.2007
Статус:
Offline
|
Quote (DeveloperX) в моём MicroCode Studio PicBasic Pro 2.47 нет процессора pic16f676!!! А в моем есть: Для того, чтобы появился и у Вас, надо обновить базу, вот так:
|
|
|
|
DeveloperX |
Дата: Ср, 04.06.2008, 11:00 | Сообщение # 204 |
Группа:
Пользователи
Ранг:
Могу и подсказать
Сообщений:
149
Замечания:
±
На сайте с 25.10.2007
Статус:
Offline
|
теперь при компиляции такого кода: Code Define ADC_BITS 10 ' Set number of bits in result Define ADC_CLOCK 0 ' Set clock source (Fosc/2) Define ADC_SAMPLEUS 50 ' Set sampling time in uS ADCON1 = %10001110 'Right justify, channel 0 is analog '*************************** END ADCIN SETUP bat_volts var word adcin 0,bat_volts 'read battery voltage bat_volts = (bat_volts */500)>> 2 lcdout $fe,$80+15,dec(bat_volts/100 *3),".",dec1 bat_volts говорит много раз: invalid RAM location specified почему? и что с делителем?
|
|
|
|
holyuser |
Дата: Ср, 04.06.2008, 11:20 | Сообщение # 205 |
Группа:
Проверенные
Ранг:
Могу и подсказать
Сообщений:
228
Замечания:
±
На сайте с 12.12.2007
Статус:
Offline
|
Quote (DeveloperX) теперь при компиляции такого кода: Из того куска кода, что Вы привели, не видно как подключен (дефинирован) LCD. Кроме того, программу необходимо зацикливать, чтобы не уходила в космос, или в самом конце писать STOP. Quote (DeveloperX) и что с делителем? С делителем все в порядке, работает он по Закону Ома.
|
|
|
|
DeveloperX |
Дата: Ср, 04.06.2008, 11:54 | Сообщение # 206 |
Группа:
Пользователи
Ранг:
Могу и подсказать
Сообщений:
149
Замечания:
±
На сайте с 25.10.2007
Статус:
Offline
|
вот программа: Code Define ADC_BITS 10 ' Set number of bits in result Define ADC_CLOCK 0 ' Set clock source (Fosc/2) Define ADC_SAMPLEUS 50 ' Set sampling time in uS
DEFINE LCD_DREG PORTC 'LCD data port B ' DEFINE LCD_DBIT 0 'LCD data starting bit 0 or 4 ' DEFINE LCD_RSREG PORTC 'LCD register select port D.1 ' DEFINE LCD_RSBIT 4 'LCD register select bit 1 ' DEFINE LCD_EREG PORTC 'LCD enable port D.3 ' Óñòàíîâêè LCD äèñïëåÿ DEFINE LCD_EBIT 5 'LCD enable bit ' DEFINE LCD_BITS 4 'LCD bus size 4 or 8 ' DEFINE LCD_LINES 2 ' DEFINE LCD_COMMANDUS 2000 DEFINE LCD_DATAUS 50 DEFINE OSC 4 'èñïîëüçóåì êâàðö íà 4ÌÃö
ADCON0 = %10001110 'Right justify, channel 0 is analog '************************* loop: bat_volts var word adcin 0,bat_volts 'read battery voltage bat_volts = (bat_volts */500)>> 2 lcdout $fe,1,dec(bat_volts/100 *3),".",dec1 bat_volts
goto loop компилируется ОК! вот схема: схему переделал: подключил d4,d5,d6,d7 к rc0-rc3 и соответственно rs, ee. что-то не показывает ничего и сообщения выводятся "controller recieved data whilst busy"!
Сообщение отредактировал
DeveloperX - Ср, 04.06.2008, 12:10
|
|
|
|
holyuser |
Дата: Ср, 04.06.2008, 12:20 | Сообщение # 207 |
Группа:
Проверенные
Ранг:
Могу и подсказать
Сообщений:
228
Замечания:
±
На сайте с 12.12.2007
Статус:
Offline
|
LCD подключен неправильно. Дефиниция: DEFINE LCD_DBIT 4 некорректна, потому что у 14-выводных пиков PORTC и PORTA - неполные. Поэтому в таких случаях, для подключения D4...D7 LCD в PicBasicPro, можно использовать только младшую тетраду порта пика - например PORTC.0 до PORTC.3, или PORTA.0 до PORTA.3. Тогда будет: DEFINE LCD_DBIT 0 Управление LCD (RS, E) можно подключать к любому свободному выводу пика (и соотв. дефинировать!)
|
|
|
|
DeveloperX |
Дата: Ср, 04.06.2008, 15:55 | Сообщение # 208 |
Группа:
Пользователи
Ранг:
Могу и подсказать
Сообщений:
149
Замечания:
±
На сайте с 25.10.2007
Статус:
Offline
|
сейчас подключено так: и опять: Quote (DeveloperX) что-то не показывает ничего и сообщения выводятся "controller recieved data whilst busy"! теперь то что???
|
|
|
|
holyuser |
Дата: Ср, 04.06.2008, 16:32 | Сообщение # 209 |
Группа:
Проверенные
Ранг:
Могу и подсказать
Сообщений:
228
Замечания:
±
На сайте с 12.12.2007
Статус:
Offline
|
Quote (DeveloperX) теперь то что??? Ладно, разберемся. Вечером вернусь с работы и соберу на макете, потом отпишусь. А теперь, боюсь как бы с работы не уволили...
|
|
|
|
Yrok |
Дата: Чт, 05.06.2008, 14:33 | Сообщение # 210 |
Группа:
Проверенные
Ранг:
Продвинутый
Сообщений:
112
Замечания:
±
На сайте с 27.09.2007
Статус:
Offline
|
Привет!!! Управляющие сигналы с D4-D7--перенеси на D0-D3 , а D4-D7 посади на землю---и все должно заработать. Желаю удачи))))
|
|
|
|