Быстрый заказ, позвонить +7-978-708-85-73
Дроссель Amadeus Productions. Быстрый заказ по телефону.
(Viber, WhatsApp, Telegram)
Amadeus Productions Дроссельный узел на Lancer IX 1.6 (4G18), 2.0 (4G63) и другие моторы
Ремкомплект РХХ на Mitsubishi Lancer IX, 1.6 (4G18), MD619857, 1450A116
Облегченный маховик на 1.6 (4G18) и другие моторы
Облегченные шкивы на 1.6 (4G18) и другие моторы
One-touch или "Ленивые поворотники"

10 страниц V  « < 4 5 6 7 8 > »   
Reply to this topicStart new topic
> Микроконтроллеры
BoomeR
сообщение 11.2.2011, 17:13
Сообщение #101


Начинающий Технический Маньяк
**

Группа:
Технический Маньяк
Сообщений: 36
Регистрация: 11.2.2011
Из: Шуя
Вне форума


Репутация:   0  


Здравствуйте! Прочитав вашу статью про МК, появилось оч большое желание по работать с ними. Уже успел научиться подключать термометр, дисплей, кнопки, динамик, но на данный момент хочу сделать тахометр, не подскажете какая команда в микро бейсике считает импульсы пришедшие на определенный порт? И как её использовать. И где можно достать список команд для микро бейсика на русском, инфы и примеров о нем в нете оч не хватает, а английский я не знаю, что бы в стандартном хелпе разбираться. Заранее спасибо.
Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post
Titus
сообщение 11.2.2011, 18:08
Сообщение #102


Don Amadeus
*******

Группа:
Главные администраторы
Сообщений: 29954
Регистрация: 19.2.2009
Из: Russia, Sevastopol
Вне форума
Авто: Lancer IX-1.6 MT Turbo, Honda Accord IX-2.4 AT Executive.

Репутация:   466  


BoomeR, велкам на форум, заполняй профиль плз (IMG:style_emoticons/default/wink.gif) (IMG:style_emoticons/default/drinks.gif)
Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post
SSh
сообщение 11.2.2011, 18:53
Сообщение #103


Технический Маньяк-Гуру
*******

Группа:
Технический Маньяк
Сообщений: 7049
Регистрация: 3.6.2009
Из: Армения
Вне форума
Авто: Lancer IX, AT

Репутация:   265  


В компилляторах микро... нет команд подсчитывающих импульсы или измеряющих их или частоту. Можно организовать измерение периода измерив отдельно высокий и низкий уровень входного сигнала, ну и из периода уже подсчитываем частоту. Но... получается так называемый breaking call, т.е. если импульсы на счетном входе отсутствуют программа останавливается и ждет пока не проскочит импульс. Для этого дела очень хорошо подходит PicBasic, там есть отдельная команда - PULSEIN.
Русских мануалов я не встречал, но в этих компилляторах и справка очень хорошо организована и при инсталляции устанавливается куча примеров - чуть ли не на все случаи жизни. Да и форум у них хороший. Плюс - на сайте есть множество примеров, присланных пользователями. Плюс - эта-же компания выпускает различные периферийные устройства (часы, термометры, акселерометры, короче все что угодно) и к каждому устройству приложены примеры, которые можно скачать с того-же сайта.
Если что - поможем (IMG:style_emoticons/default/smile.gif)

Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post
BoomeR
сообщение 11.2.2011, 18:59
Сообщение #104


Начинающий Технический Маньяк
**

Группа:
Технический Маньяк
Сообщений: 36
Регистрация: 11.2.2011
Из: Шуя
Вне форума


Репутация:   0  


Я по задумке хотел бы сделать типо бортового компьютера для машины, что бы там был вольтметр, термометр, часы, тахометр. То есть у меня не получится написать такой код на микро бейсике, так как если остановится двигатель и импульсы перестанут идти на МК, пик грубо говоря зависнет?
Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post
SSh
сообщение 11.2.2011, 20:14
Сообщение #105


Технический Маньяк-Гуру
*******

Группа:
Технический Маньяк
Сообщений: 7049
Регистрация: 3.6.2009
Из: Армения
Вне форума
Авто: Lancer IX, AT

Репутация:   265  


Нет, пик не зависнет по большому счету, просто выполнение программы притормозится до тех пор пока не пойдут импульсы. На практике - пока двигатель не заведется борткомпьютер или ничего не будет показывать или какие-то "старые" значения. Например, завели двигатель, БК начал показывать все параметры в реальном времени, заглушили - все показания остались такими, какими были в момент выключения зажигания. Или, в зависимости от структуры программы, скажем сначала идут процедуры измерения напряжения, часов и т.д. и в конце - тахометр. Выведутся все параметры а на тахометре программа затормозится до тех пор, пока на заведется движок.
Если же процедура тахометра первая в программе - то тогда вообще ничего не будет высвечиваться до пуска движка.
Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post
BoomeR
сообщение 11.2.2011, 21:21
Сообщение #106


Начинающий Технический Маньяк
**

Группа:
Технический Маньяк
Сообщений: 36
Регистрация: 11.2.2011
Из: Шуя
Вне форума


Репутация:   0  


Ну да, это я и имел в виду... а можно по подробнее как в микро бейсике счет импульсов сделать, как вы сказали breaking call. Я подумал насчет того что бы не висла, просто пущю провод от замка зажигания к ПИКу, или еще лучше от контрольной лампы давления масла, когда движок заведется и появится давление масла, на этом проводе пропадет минус, и ПИК будет выполнять счет импульсов, а пока его нет, он эту часть программы будет обходить стороной (IMG:style_emoticons/default/smile.gif) в этом случае даже при заглушенном моторе и включенном зажигании он будет отображать все что мне необходимо и без всяких остановок! (IMG:style_emoticons/default/smile.gif)
И еще вопросик, поддерживает ли микробейсик отображение на знакосинтезирующем дисплее русские буквы, как не пытался, одни закорюки вместо букв (IMG:style_emoticons/default/sad.gif) с английским все ок! дисплей точно поддерживает.
Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post
SSh
сообщение 11.2.2011, 22:13
Сообщение #107


Технический Маньяк-Гуру
*******

Группа:
Технический Маньяк
Сообщений: 7049
Регистрация: 3.6.2009
Из: Армения
Вне форума
Авто: Lancer IX, AT

Репутация:   265  


PulseIn Demo
Код
'(*
' * Project name:
'
' * Copyright:
'     (c) mikroElektronika, 2006
' * Revision History:
'     20050914 (MJ):
'       - initial release.
' * Description:
'     This code demonstrates using Pulse-In Function for counting pulses in given
'     time period. This a blocking call. This demo waits for input signal
'     (high level) to start counting pulses. It counts pulses for 1000 miliseconds.
'     Then it prints results on LCD which is connected on PORTB.
' * Test configuration:
'     MCU:             P16F877A
'     Dev.Board:       EasyPIC3
'     Oscillator:      HS, 8.000 MHz
'     Ext. Modules:    None
'     SW:              mikroBasic v5.0 or higher
' * NOTES:
'     Prototype:
'       function Pulse_In(dim byref port as byte, dim pin, state as byte, dim duration as word)as word
'
'     PORT  - assigns port for pulse-in function
'     PIN   - assigns pin for pulse-in function
'     STATE - defines logical state for counting pulses (LOW = 0 or HIGH = 1)
'     DURATION - Time in ms during which the pulses are being count
'
'     This function returns number of pulses in given time (DURATION), on given
'       PORT and PIN.
'     Tested on EasyPIC3 with P16F877A. With few modification it can be used
'       with almost every PIC MCU.
' *)
program pulsein_demo

dim counter,
    msec,
    num_impulse as word
    txt         as char[10]
    
sub procedure interrupt
   inc(counter)                               ' Increment value of counter on every interrupt
   if counter = 1 then                        ' Has 1ms elapsed?
     counter = 0                              ' Clear the counter
     inc(msec)                                ' Increment msec on every 1 ms
   end if
   TMR0 = 5
   ClearBit(INTCON, T0IF)                     ' Clear the TMR0IF flag
   SetBit(INTCON, T0IE)                       ' Enable TMR0 interrupt
end sub

sub function Pulse_In(dim byref port as byte, dim pin, state as byte, dim duration as word)as word
dim tmp as word                               ' Temporary variable
    old as byte                               ' Previous pin state value

  while TestBit(port, pin) = state            ' Wait for pulses
  wend                                        ' Note that the program will stop here
                                              '   if there are no pulses
  
  while TestBit(port, pin) <> state           ' Wait for rising (falling) edge
  wend                                        ' Note that the program will stop here
                                              '   if there are no pulses

  tmp  = 0                                    ' Clear temporary variable
  msec = 0                                    ' Clear number of ms
  old  = TestBit(port, pin)                   ' Get current pin state

  while duration > msec                       ' Check if duration is reached
     if (TestBit(port, pin)) <> old then      ' Check if pin state has changed
        inc(tmp)                              ' Increment number of pulses
        old = TestBit(port, pin)              ' Get current pin state
     end if
  wend

    result = (tmp >> 1) + 1                   ' Assign result value
end sub

main:
  OPTION_REG = 2                              ' Assign prescaler to TMR0 (1:8)
  TRISB  = $00                                ' Designate PORTB as output
  PORTB  = $FF                                ' Initialize PORTB

  TRISD  = $FF                                ' Designate PORTD as input (for signal)

  counter= $00                                ' Initialize the counter
  TMR0  = 5
  INTCON = $A0                                ' Enable TMRO interrupt

  msec = 0                                    ' Clear msec
  num_impulse = 0                             ' Clear num_impulse

  ADCON1 = $FF                                ' PORTB all digital
  CMCON  = $06                                ' Comparators off

  Lcd_Init(PORTB)                             ' Initialize LCD connected to PORTB
  Lcd_Cmd(LCD_CLEAR)                          ' Send command to LCD "clear display"
  Lcd_Cmd(LCD_CURSOR_OFF)                     ' Send command "cursor off"


  Lcd_Out(1, 1, "Waiting...      ")           ' Print txt to LCD
  num_impulse = Pulse_In(PORTD, 0, 1, 1000)   ' Count HI pulses on PORTD.0, for 1000ms
  WordToStr(num_impulse, txt)                 ' Convert results to string for LCD output
  Lcd_Out(1, 1, "Number of pulses")           ' Print txt to LCD
  Lcd_Out(2, 1, txt)                          ' Print number of pulses to LCD
  while 1 = 1
  wend                                        ' Wait forever (stop)
end.

Насчет кириллицы - все зависит от примененного ЖК индикатора, есть русифицированные а есть - нет.
Если нет - ничего не попишешь, в них вообще-то можно прописать символы, определенные пользователем, но всего 8 шт. Обычно эту возможность применяют для отображения нестанартных (отсутствующих в станартной таблице) символов.
Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post
BoomeR
сообщение 11.2.2011, 23:01
Сообщение #108


Начинающий Технический Маньяк
**

Группа:
Технический Маньяк
Сообщений: 36
Регистрация: 11.2.2011
Из: Шуя
Вне форума


Репутация:   0  


SSh спасибо большое. Жаль что с английским не дружу (IMG:style_emoticons/default/dry.gif) буду по тихоньку разбираться. Как я понял он будет делать счет импульсов за секунду и при этом задержка выполнения программы будет на секунду, а как сделать что бы он отображал количество импульсов в минуту и при этом не ждал и не считал импульсы целую минуту, что бы самая минимальная задержка была, и мог считывать от 2000 импульсов в минуту? (IMG:style_emoticons/default/wacko.gif) Это понятно что полученное значение придется умножать на что то что бы получить в минутах и минуту не ждать, а потом выводить на дисплей, какой самый короткий период времени что бы он успевал считать, при кварце 20 000? (IMG:style_emoticons/default/wacko.gif)
Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post
BoomeR
сообщение 11.2.2011, 23:22
Сообщение #109


Начинающий Технический Маньяк
**

Группа:
Технический Маньяк
Сообщений: 36
Регистрация: 11.2.2011
Из: Шуя
Вне форума


Репутация:   0  


Если конечно что то не реальное говорю, вы меня поправьте, я в этом деле новичок, еще только разбираюсь (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post
SSh
сообщение 11.2.2011, 23:31
Сообщение #110


Технический Маньяк-Гуру
*******

Группа:
Технический Маньяк
Сообщений: 7049
Регистрация: 3.6.2009
Из: Армения
Вне форума
Авто: Lancer IX, AT

Репутация:   265  


Нет, не так. МК будет ждать импульсы до победного конца (IMG:style_emoticons/default/smile.gif) Т.е. до тех пор пока они не поступят на вход
Вот в этих строках описывается, в вольном переводе - ждать пока не будет фронт, а потом снова ждать спада импульса. И в комментарии - программа останавливается здесь если нет импульсов

while TestBit(port, pin) = state ' Wait for pulses
wend ' Note that the program will stop here
' if there are no pulses

while TestBit(port, pin) <> state ' Wait for rising (falling) edge
wend

Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post
BoomeR
сообщение 11.2.2011, 23:41
Сообщение #111


Начинающий Технический Маньяк
**

Группа:
Технический Маньяк
Сообщений: 36
Регистрация: 11.2.2011
Из: Шуя
Вне форума


Репутация:   0  


Что то я совсем ни чего не понял (IMG:style_emoticons/default/wacko.gif) все таки мне наверно без тахометра придется обойтись (IMG:style_emoticons/default/sad.gif)
Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post
SSh
сообщение 11.2.2011, 23:55
Сообщение #112


Технический Маньяк-Гуру
*******

Группа:
Технический Маньяк
Сообщений: 7049
Регистрация: 3.6.2009
Из: Армения
Вне форума
Авто: Lancer IX, AT

Репутация:   265  


Там все просто
while - ждать выполнения какого-либо условия.
wend - окончание цикла ожидания если условие выполняется, в противном случае снова переход на while.
Например, для постоянного выполнения программы можно записать что-то подобное

start:
.....
.....
программа
.....
.....
goto start

А можно и так
while 0=1
.....
.....
программа
.....
.....
wend

Т.к 0 никогда не станет равным единице, программа будет крутится бесконечно. Понятно? (IMG:style_emoticons/default/wink.gif)

Или посмотри в сторону PicBasic. А еще лучше - здесь
http://forum.amadeus-project.com/index.php?showtopic=600
Индикатор расхода топлива, если вместо расхода измерять обороты то даже проще получится, там самая сложная часть - прогрессбар. Плюс измерение температуры и индикация времени (часы)
Есть и схема и исходники (прокомментированные)
Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post
BoomeR
сообщение 12.2.2011, 0:51
Сообщение #113


Начинающий Технический Маньяк
**

Группа:
Технический Маньяк
Сообщений: 36
Регистрация: 11.2.2011
Из: Шуя
Вне форума


Репутация:   0  


SSh насчет программы немного начинаю понимать, буду разбираться. А на пик бейсике пробовал писать, что то вообще ни как, как то к микро привык. И хочется не что то готовое, а хочется что то самому сделать (IMG:style_emoticons/default/smile.gif) разобраться как это работает и под себя подстроить. Как у меня вечная проблема с сабвуфером, послушаешь чуть чуть, потом машину не заведешь, и мне хочется в этот БК вольтметр, что бы настроить на самое низкое напряжение при котором стартер крутится, как напряжение чуть ниже опустилось и БК начал попискивать, что пора заводить машину (IMG:style_emoticons/default/smile.gif) так же и с температурой двигателя (IMG:style_emoticons/default/smile.gif) дисплей я собираюс 4-х строчный ставить (wh2004), что бы все нормально видно было, а не в куче (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post
SSh
сообщение 12.2.2011, 1:13
Сообщение #114


Технический Маньяк-Гуру
*******

Группа:
Технический Маньяк
Сообщений: 7049
Регистрация: 3.6.2009
Из: Армения
Вне форума
Авто: Lancer IX, AT

Репутация:   265  


Так я же не говорю "бери и используй". Как раз хорошая стартовая информация для того чтобы понять как это работает и подстроить под себя.
В первоначальном варианте кстати и вольтметр был, потом я эту подпрограмму изъял за ненадобностью (мне) (IMG:style_emoticons/default/wink.gif) Но ввести легко - просто использовать один из входов как АЦП.
С температурой двигателя могу посоветовать подключиться непосредственно к датчику температуры ОЖ, т.е. и для температуры тоже использовать один из портов как АЦП.
Т.к. входное сопротивление МК очень велико, то он не будет оказывать никакого влияния на показания приборки.
А с прерыванием программы ты же не сможешь контроллировать ничего с заглушенным движком...

В любом случае я просто советую - решать тебе (IMG:style_emoticons/default/wink.gif)
Под конец вопрос - а куда думаешь четырехстрочник ставить?
Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post
BoomeR
сообщение 12.2.2011, 12:13
Сообщение #115


Начинающий Технический Маньяк
**

Группа:
Технический Маньяк
Сообщений: 36
Регистрация: 11.2.2011
Из: Шуя
Вне форума


Репутация:   0  


SSh, куда ставить я еще не придумал (IMG:style_emoticons/default/blush.gif) а насчет того что бы при заглушеном двигателе программа не останавливалась нельзя ли что то типо того:

main:

if (Button(PORTx,x,1,1)) then ' Это провод с контрольного датчика давления масла, когда движок стоит, на нем"-", как только заведется и появится давление масла на этом проводе будет "+"

cюда вставить часть программы счатающюю импульсы


end if

И получится если двигатель заглушен, на ноге ПИКа будет минус, и он не будет тогда ждать импульсов. Если что то не так поправте (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post
SSh
сообщение 12.2.2011, 12:16
Сообщение #116


Технический Маньяк-Гуру
*******

Группа:
Технический Маньяк
Сообщений: 7049
Регистрация: 3.6.2009
Из: Армения
Вне форума
Авто: Lancer IX, AT

Репутация:   265  


Можно... Но в PicBasic-е все проще намного (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post
BoomeR
сообщение 12.2.2011, 12:53
Сообщение #117


Начинающий Технический Маньяк
**

Группа:
Технический Маньяк
Сообщений: 36
Регистрация: 11.2.2011
Из: Шуя
Вне форума


Репутация:   0  


SSh спасибо! Теперь у меня есть надежды, что хоть что то, но должно получиться (IMG:style_emoticons/default/smile.gif) а с ПИКБейсиком согласен что там все проще. Но мне чем заново осваивать Пик бейсик, проще будет разобраться со счетом импульсов в Микро.
Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post
SSh
сообщение 12.2.2011, 13:19
Сообщение #118


Технический Маньяк-Гуру
*******

Группа:
Технический Маньяк
Сообщений: 7049
Регистрация: 3.6.2009
Из: Армения
Вне форума
Авто: Lancer IX, AT

Репутация:   265  


Как тебе удобнее, конечно, так и делай (IMG:style_emoticons/default/smile.gif) В любом случае, если будут вопросы - постараюсь помочь чем смогу.
Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post
NeWT
сообщение 27.2.2011, 21:23
Сообщение #119


Технический Маньяк-Гуру
*******

Группа:
Технический Маньяк
Сообщений: 1724
Регистрация: 15.10.2009
Из: Москва, п. Монино
Вне форума


Репутация:   8  


Странная проблемка вылезла (IMG:style_emoticons/default/blink.gif) PIC12F675. Подключения: +5В питание, минус, MCLR на +5В через 10кОм и цифровой вход GP1 на который приходит или не приходит 4.4В. Так вот если отключить питание +5В, то МК продолжает работать на питании от GP1, где в этот момент уже почему-то не 4.4В, а 3.6В, а на Vcc при этом 2.8В откуда-то беруться... Что это? Как сделать, чтобы МК не питался от цифровых входов?
Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post
SSh
сообщение 27.2.2011, 21:48
Сообщение #120


Технический Маньяк-Гуру
*******

Группа:
Технический Маньяк
Сообщений: 7049
Регистрация: 3.6.2009
Из: Армения
Вне форума
Авто: Lancer IX, AT

Репутация:   265  


(IMG:style_emoticons/default/smile.gif) Похожий случай был у Димы с AVR-ом.
МК потребляют так мало тока что логического уровня на входе им хватает для работы...
Go to the top of the page
¬
Вставить ник в форму быстрого ответа
+Quote Post

10 страниц V  « < 4 5 6 7 8 > » 
Fast ReplyReply to this topicStart new topic
3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0)
Пользователей: 0

 



Быстрый заказ, позвонить +7-978-708-85-73
Дроссель Amadeus Productions. Быстрый заказ по телефону.
(Viber, WhatsApp, Telegram)
Amadeus Productions Дроссельный узел на Lancer IX 1.6 (4G18), 2.0 (4G63) и другие моторы
Ремкомплект РХХ на Mitsubishi Lancer IX, 1.6 (4G18), MD619857, 1450A116
Облегченный маховик на 1.6 (4G18) и другие моторы
Облегченные шкивы на 1.6 (4G18) и другие моторы
One-touch или "Ленивые поворотники"