не работает шим
- Войдите на сайт для отправки комментариев
Вс, 14/02/2016 - 10:29
Ардуино про мини, пробую настроить ПИД-регулятор, регулятор скорости с опто датчиком. При работе в какой-то момент времени в вывод А0 записывается значение, например 127, а на выходе - на самой ноге - напряжение 0. Двигатель останавливается, и пока не крутанешь рукой - стоит на месте.
#include <PID_v1.h> const int analogOutPin = A0; // Analog output pin that the LED is attached to volatile unsigned int tachBuf; //мерим скорость вращения //время между импульсами почемуто всегда разное ISR(TIMER1_CAPT_vect) { TCNT1 = 0; tachBuf = ICR1+2; } //Define Variables we'll be connecting to double Setpoint, Input, Output; //Specify the links and initial tuning parameters double Kp=1.5, Ki=0.0, Kd=0.00; PID myPID(&Input, &Output, &Setpoint, Kp, Ki, Kd, DIRECT); void setup() { // initialize serial communications at 9600 bps: Serial.begin(9600); pinMode(analogOutPin,OUTPUT); myPID.SetMode(AUTOMATIC); //настраиваем таймер для датчика скорости (списал откудато) TIMSK1=(1<<ICIE1); TCCR1A=(0<<COM1A1)|(0<<COM1A0)|(0<<WGM11)|(0<<WGM10); TCCR1B=(1<<ICNC1)|(1<<ICES1)|(0<<WGM13)|(0<<WGM12)|(0<<CS12)|(1<<CS11)|(1<<CS10); TCNT1 = 0; Setpoint = 100; } void loop() { if (Serial.available()) { Setpoint = Serial.read(); } // read the analog in value: Input = map(tachBuf,479,11000, 255, 0); myPID.Compute(); analogWrite(analogOutPin, Output); Serial.print("Val="); Serial.print(Setpoint); Serial.print(" Speed="); Serial.print(tachBuf); Serial.print(" Input="); Serial.print(Input); Serial.print(" Output="); Serial.print(Output); Serial.println("t"); }
Заметил если значение меньше 128 то на выходе 0 если больше то меняется от значения от 3.6 до 5 вольт
Народ что ни кто не сталкивался с таким? Все перепробовал, ну талкните в нужном напрвлении. Пробовал перекинуть и на другую ногу, и вообще переписал по новой просто пишу analogWrite(analogOutPin, 127); а на ноге ноль.
В А0 можно записать либо 0 либо 1. Для ШИМа нужны другие ноги.
Ну раз назвали дураком тогда и лечите дальше, прежде чем собирать и разводить плату, я на макетке попробовал, на А0 ввел значение 130 - получил почти 3 вольта, потом ввел 200 - получил на ноге почти 4 вольта, потому и подумал что сдесь тоже работает шим. Ну не попробовал меньшие значения. И я так понемаю если шим не работает то вообще не работает а не на половину.
Нету у ШИМа разных Вольтов на выходе, всего два значения LOW и HIGH. Все остальные эффекты - момент инерции)). Аналоговые входы умеют из аналогового сигнала делать цифровой, но не наоборот.
Ну раз назвали дураком тогда и лечите дальше, прежде чем собирать и разводить плату, я на макетке попробовал, на А0 ввел значение 130 - получил почти 3 вольта, потом ввел 200 - получил на ноге почти 4 вольта, потому и подумал что сдесь тоже работает шим. Ну не попробовал меньшие значения. И я так понемаю если шим не работает то вообще не работает а не на половину.
Описание прочитали? Если да, то знаете на каких ногах есть ШИМ, а на каких нет. Вот на эти ноги и забивайтесь. А если не читаете принципиально, то как Вас лечить? Медицина бессильна.
Как работает шим могу объенить ещё тебе. Цифровые приборы показывают средне действующее значение. Поэтому можно говорить о выходном напряжении на ноге.
Где какие ноги я знал и раньше, просто платка разводилась удачно потому попробовал и клюнул что напряжение меняется. Вот теперь развел новую плату(ещё не травил) смотрю какая она не красивая и сложная по сравнению с первой. Вечером вытравлю и попробую. Макетка занета не охота разбирать.
Если всё так хорошо знаешь, что можешь другим объяснять, прекрати задавать детско-чайниковые вопросы и решай свои проблемы сам.
Заметил если значение меньше 128 то на выходе 0 если больше то меняется от значения от 3.6 до 5 вольт
Значение от 3,5 до 5 В - это просто HIGH. Он не обязан быть 5В (читай даташит), он от 0,7*Vcc до Vcc - а это как раз от 3,5 до 5. Вот и всё, ни хрена там больше нет.
ШИМ работает только на специально выделенных ногах (по две ноги на таймер) и ни на каких других. Ты. конечно, это знаешь и можешь мне объяснить, но даташит посмотри всё же.
Если напрягает чайниковые вопросы не отвечай.
Если напрягает чайниковые вопросы не отвечай.
Не напрягают. Напрягает, когда человеку говоришь "прочитай" и даёшь ссылку, а он нихрена не читает и продолжает нести какой-то бред про "наполовину работающий ШИМ". Вот это реально напрягает. Как можно помочь человеку, если он читает что ему говорят прочитать? Никак. Вот я и завязываю в этой теме.
Ну во первых я не говорил что не прочитал, ПРОЧИТАЛ, и с первого раза, просто не понял откуда 3,5 вольт при питании 5 вольт.
Вам же сказали: "...почитай", а если лень, то от себя добавлю, чтоDmt пишет:
OUTPUT: стало быть - цифровой (но никак ни аналоговый и вообще А0 - АналогИнпут) - я на это ещё в Протеусе нарвался: до 127 - пин синий (лог "0"), а после 128 - красный (соответственно "1") - надо понимать: в цикле
Уфо... "до вас как до жирафа"... последнему посту ветки 2.5 года.
спс... Я в курсе - мать писала
З.Ы. Глядишь поможет кому-нить не наступить на такие же грабли
А вААЩПе - ПИД-регулятор: ет мой больной мозоль - бьюсь пока как рыба об камень
Народ, если кто-то сдесь ещё сидит, можете подсказать почему может не работать шим на D3(UNO), если надо могу код скинуть(478 строк).
можете подсказать почему может не работать шим на D3(UNO),
много почему, например плата сдохла... или ошибка в коде... или это вообще не ардуино.
нам - не надо, а вы - решайте сами