Регистрация | Вход

[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Модератор форума: ivan_fd  
Форум Picbasic.ru » Программирование МК » PicBasicPro » Cчет импульсов (счет импульсов)
Cчет импульсов
holyuser Дата: Чт, 29.05.2008, 13:45  |                                                                                                                Сообщение # 196
Группа: Проверенные
Ранг:  Могу и подсказать
Сообщений: 228
Репутация: 5   ±
Замечания:   ±
На сайте с 12.12.2007

Статус: Offline

Делал когда-то на PIC16F688, думаю разница небольшая будет.
DeveloperX Дата: Чт, 29.05.2008, 13:49  |                                                                                                                Сообщение # 197
Группа: Пользователи
Ранг:  Могу и подсказать
Сообщений: 149
Репутация: 1   ±
Замечания:   ±
На сайте с 25.10.2007

Статус: Offline

Quote (holyuser)
Делал когда-то на PIC16F688, думаю разница небольшая будет.

какая там схема была? и код желательно на пикбасике.
holyuser Дата: Чт, 29.05.2008, 14:03  |                                                                                                                Сообщение # 198
Группа: Проверенные
Ранг:  Могу и подсказать
Сообщений: 228
Репутация: 5   ±
Замечания:   ±
На сайте с 12.12.2007

Статус: Offline

Это у меня на старом компе осталось, поищу, как только время будет.
evgenb Дата: Чт, 29.05.2008, 20:33  |                                                                                                                Сообщение # 199
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 91
Репутация: 3   ±
Замечания:   ±
На сайте с 14.09.2007

Статус: Offline

DeveloperX

Посмотрите такое решение вольтметра, может сгодится.
http://slil.ru/25844527
Напряжение снимается с потенциометра RV2.
Графический движок можно исключить.
Успехов.

DeveloperX Дата: Пт, 30.05.2008, 09:54  |                                                                                                                Сообщение # 200
Группа: Пользователи
Ранг:  Могу и подсказать
Сообщений: 149
Репутация: 1   ±
Замечания:   ±
На сайте с 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
Репутация: 3   ±
Замечания:   ±
На сайте с 14.09.2007

Статус: Offline

Quote (DeveloperX)
evgenb, а кода на пикбасике нет?

Надо писать.
Блок АЦП приведен в последнем примере, а вывод на 7-ми сегментный индикатор приводился ранее.
Сложите, и в перед. smile

ЯНДЕКС Дата: 01.06.2008
DeveloperX Дата: Ср, 04.06.2008, 09:27  |                                                                                                                Сообщение # 202
Группа: Пользователи
Ранг:  Могу и подсказать
Сообщений: 149
Репутация: 1   ±
Замечания:   ±
На сайте с 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
Репутация: 5   ±
Замечания:   ±
На сайте с 12.12.2007

Статус: Offline

Quote (DeveloperX)
в моём MicroCode Studio PicBasic Pro 2.47 нет процессора pic16f676!!!

А в моем есть:

Для того, чтобы появился и у Вас, надо обновить базу, вот так:

DeveloperX Дата: Ср, 04.06.2008, 11:00  |                                                                                                                Сообщение # 204
Группа: Пользователи
Ранг:  Могу и подсказать
Сообщений: 149
Репутация: 1   ±
Замечания:   ±
На сайте с 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
Репутация: 5   ±
Замечания:   ±
На сайте с 12.12.2007

Статус: Offline

Quote (DeveloperX)
теперь при компиляции такого кода:

Из того куска кода, что Вы привели, не видно как подключен (дефинирован) LCD.
Кроме того, программу необходимо зацикливать, чтобы не уходила в космос, или в самом конце писать STOP.

Quote (DeveloperX)
и что с делителем?

С делителем все в порядке, работает он по Закону Ома.

DeveloperX Дата: Ср, 04.06.2008, 11:54  |                                                                                                                Сообщение # 206
Группа: Пользователи
Ранг:  Могу и подсказать
Сообщений: 149
Репутация: 1   ±
Замечания:   ±
На сайте с 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
Репутация: 5   ±
Замечания:   ±
На сайте с 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
Репутация: 1   ±
Замечания:   ±
На сайте с 25.10.2007

Статус: Offline

сейчас подключено так:

и опять:
Quote (DeveloperX)
что-то не показывает ничего и сообщения выводятся "controller recieved data whilst busy"!

теперь то что???
holyuser Дата: Ср, 04.06.2008, 16:32  |                                                                                                                Сообщение # 209
Группа: Проверенные
Ранг:  Могу и подсказать
Сообщений: 228
Репутация: 5   ±
Замечания:   ±
На сайте с 12.12.2007

Статус: Offline

Quote (DeveloperX)
теперь то что???

Ладно, разберемся.
Вечером вернусь с работы и соберу на макете, потом отпишусь.
А теперь, боюсь как бы с работы не уволили... sad
Yrok Дата: Чт, 05.06.2008, 14:33  |                                                                                                                Сообщение # 210
Группа: Проверенные
Ранг:  Продвинутый
Сообщений: 112
Репутация: 2   ±
Замечания:   ±
На сайте с 27.09.2007

Статус: Offline

Привет!!!
Управляющие сигналы с D4-D7--перенеси на D0-D3 , а D4-D7 посади на землю---и все должно заработать.
Желаю удачи))))
Форум Picbasic.ru » Программирование МК » PicBasicPro » Cчет импульсов (счет импульсов)
Поиск: