Пользовательский блок "измерение переменного тока"
Пользовательский блок "измерение переменного тока"
Реле у меня самое обыкновенное, при 1 на входе оно замыкается. Сначала я использовал пин13, чтобы по светодиоду определять его состояние . Позже подумал, что лучше использовать другой пин и реле. На плате реле есть два светодиода: красный, сигнализирующий о наличии питания и зелёный, сигнализирующий о состоянии контактов реле. Так вот с этим скетчем реле у меня постоянно замкнуто. Что самое интересное, с выхода компаратора инвертирую сигнал, а реле всё равно остаётся замкнутым!!! Когда просто выдёргиваю проводок из ардуины, зелёный светодиод гаснет. Для проверки работоспособности этого выхода залил в ардуину программу кнопки. Замыкая контакт, реле на этом пине замыкается и размыкается. Может кто-нибудь посмотрит скетч и даст разумный ответ на это?
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
- Лейтенант
- Сообщения: 361
- Зарегистрирован: 07 сен 2015, 23:53
Пользовательский блок "измерение переменного тока"
А у вас есть что-нибудь кроме блока реле для проверки выхода? Вольтметр например?
Пользовательский блок "измерение переменного тока"
Что-то мне припоминается что компаратор с Float не дружит. Может я и не прав, я обычно integer использую, проверить сейчас не могу.
-
- Лейтенант
- Сообщения: 361
- Зарегистрирован: 07 сен 2015, 23:53
Пользовательский блок "измерение переменного тока"
Не знаю, вот кусок моего проекта, прекрасно работает:
Добавлено (30.01.2017, 14:21)
---------------------------------------------
lopezmil, а вы вообще смотрели, что у вас на входе в компаратор?
Добавлено (30.01.2017, 14:21)
---------------------------------------------
lopezmil, а вы вообще смотрели, что у вас на входе в компаратор?
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Пользовательский блок "измерение переменного тока"
Хоть кто-нибудь, кроме Slavas ( который сделал этот пользовательский блок ТА12), себе в flprog, прикреплённый мной файл, закидывал, открывал? Я спрашиваю не об абстрактных формах, а о конкретных вещах. В компараторе есть возможность выбора float, значит должен дружить. С выхода wire я получаю реальное значение тока. Отправляю его в компаратор (I2). Сравниваю его с уставкой (I1) в компараторе и на выходе с компаратора должен получить ответ о работоспособности устройства в виде 0 или 1. Вот так должна работать схема. А она мне постоянно выдаёт 1 на выходе компаратора. Вот в чём вопрос!!!$IMAGE1$
Добавлено (30.01.2017, 15:03)
---------------------------------------------
картинка
Добавлено (30.01.2017, 15:03)
---------------------------------------------
картинка
Пользовательский блок "измерение переменного тока"
.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Пользовательский блок "измерение переменного тока"
А с чего-бы вам про флоат писал?lopezmil писал(а):Хоть кто-нибудь, кроме Slavas ( который сделал этот пользовательский блок ТА12), себе в flprog, прикреплённый мной файл, закидывал, открывал?
Повесьте переменную на входе компаратора и на выходе и смотрите через компорт что у вас там происходит. Я обычно дисплей подключаю в таких случаях - все как на ладони.
Пользовательский блок "измерение переменного тока"
lopezmil, у Вас блок работает нормально?
в схеме у Вас условие если вход 2 меньше 600 тогда на выходе 1.
в схеме у Вас условие если вход 2 меньше 600 тогда на выходе 1.
Пользовательский блок "измерение переменного тока"
Подскажите пожалуйста, а на монитор порта вывести эти переменные со входа и выхода можно? Я не совсем представляю себе как это сделать в flprog. Или нужно скомпилировать скетч и уже в скомпилированном добавить SerialPrint и те переменные, которые нужно вывести на экран?
-
- Лейтенант
- Сообщения: 361
- Зарегистрирован: 07 сен 2015, 23:53
Пользовательский блок "измерение переменного тока"
Элементарно, Ватсон :lopezmil писал(а):а на монитор порта вывести эти переменные со входа и выхода можно?
[spoiler=Спойлер][/spoiler]
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Пользовательский блок "измерение переменного тока"
Вообще то в этом блоке я не удалял отправку com port и соответственно он в фоновом режиме отправляет туда данные. У меня косяк не понятный на lcd и блок отправки переменной в компорт блок не передаёт данные, либо я в коде накосячил либо последняя версия прги .
Пользовательский блок "измерение переменного тока"
slavas, блок работает прекрасно. Огромное спасибо за помощь. Да, условие такое, только ничего не происходит, ни когда вход 2 меньше 600, ни когда больше. На пин 13 всё время 1. Я уже попробовал вставить после компаратора преобразователь float->int и константу изменял так же int, но и это не помогло.
Пользовательский блок "измерение переменного тока"
Как вы проверяли вы не написали, так что напишу как-бы проверял я в вашей ситуации.lopezmil писал(а):Да, условие такое, только ничего не происходит, ни когда вход 2 меньше 600, ни когда больше. На пин 13 всё время 1.
1. Инвертируем выход 13, если на выходе появился низкий, значит вход рабочий и переходим к пункту 2, если не появился, то выход не рабочий и тогда подключаем другой выход или берем другой контроллер.
2. На второй вход компаратора поставим 650, выход 13 возвращаем в исходное состояние. Появился низкий, значит проблема в блоке пользователя и он не дает значение больше 600 (или это из-за датчика), не появился, значит какой-то глюк в программе, что иногда случается. Выручает создание нового проекта с самого начала.
Пользовательский блок "измерение переменного тока"
Как я проверял?! Скомпилировал проект > загрузил в ардуино > включил монитор порта и наблюдал за показаниями выхода wire. Они изменялись в соответствии с изменением нагрузки на реальном вентиляторе. Значит пользовательский блок работает (картинка в посте №26). В посте №21 я уже писал, что выход пробовал инвертировать. В посте №19 писал, что пробовал другие пины. Ничего не помогает. Повторюсь, что пробовал на этих пинах скетч с обычной кнопкой, т.е. на 7 пине кнопка, а пин 13 выход. Замыкаю пин 7 на 13 пине загорается светодиод. Плата исправна!!! Неисправна программа. А в чём неисправность не могу понять???
Добавлено (31.01.2017, 21:18)
---------------------------------------------
Добавлено (31.01.2017, 21:18)
---------------------------------------------
Код: Выделить всё
float vpp;
float ncurr;
float rms;
float wire;
int sensorTA12=0; // Analog input pin that sensor is attached to
float nVPP; // Voltage measured across resistor
float nCurrThruResistorPP; // Peak Current Measured Through Resistor
float nCurrThruResistorRMS; // RMS current through Resistor
float nCurrentThruWire; // Actual RMS current in Wire
void setup()
{
pinMode(13, OUTPUT);
Serial.begin(9600);
pinMode(sensorTA12, INPUT);
}
void loop()
{
nVPP = getVPP();
nCurrThruResistorPP = (nVPP/200.0) * 1000.0;
nCurrThruResistorRMS = nCurrThruResistorPP * 0.707;
nCurrentThruWire = nCurrThruResistorRMS * 1000;
Serial.print("Volts Peak : ");
Serial.println(nVPP,3);
vpp = nVPP ; // выход vpp
Serial.print("Current Through Resistor (Peak) : ");
Serial.print(nCurrThruResistorPP,3);
Serial.println(" mA Peak to Peak");
ncurr = nCurrThruResistorPP ; // выход ncurr
Serial.print("Current Through Resistor (RMS) : ");
Serial.print(nCurrThruResistorRMS,3);
Serial.println(" mA RMS");
rms = nCurrThruResistorRMS ; // выход rms
Serial.print("Current Through Wire : ");
Serial.print(nCurrentThruWire,3);
Serial.println(" mA RMS");
wire= nCurrentThruWire ; // выход wire
Serial.println();
}
float getVPP()
{
float result;
int readValue; //value read from the sensor
int maxValue = 0; // store max value here
uint32_t start_time = millis();
while((millis()-start_time) < 1000) //sample for 1 Sec
{
readValue = analogRead(sensorTA12);
// see if you have a new maxValue
if (readValue > maxValue)
{
/*record the maximum sensor value*/
maxValue = readValue;
}
}
// Convert the digital data to a voltage
result = (maxValue * 5.0)/1024.0;
return result;
digitalWrite(13, (600.00) < (wire));
}
- Dev1
- Майор
- Сообщения: 1045
- Зарегистрирован: 12 июл 2016, 18:04
- Откуда: Гондурас
- Поблагодарили: 3 раза
Пользовательский блок "измерение переменного тока"
Что то новенькое
если логику не спутал, особенно не вникал..
Должно быть как то такlopezmil писал(а):digitalWrite(13, (600.00) < (wire));
Код: Выделить всё
if (wire > 600)
{
digitalWrite(13, HIGH);
}
else
{
digitalWrite(13, LOW);
}
Win10-64 FLProg v8.2.3 Portable IDE 1.8.19, 2,x,x 

Пользовательский блок "измерение переменного тока"
Если у вас железо работает, то отсекайте по частям, удалите пользовательский блок, оставьте компаратор с выходом и проверьте. У меня ни разу компаратор нигде не глючил, так что проверяйте. Или что еще лучше сделайте новый проект, сначала проверка выхода с кнопкой, потом к нему подсоедините компаратор - на входах поставьте константы, ну потом пользовательский блок. Ну и смотрите где заткнется.
Пользовательский блок "измерение переменного тока"
вот так мне компилирует flprog. Я понимаю, что ошибка в компиляции проекта программой, но где она не знаю. Поэтому и выложил уже скомпилированый текст программы. Попробовал ваше исправление, не помогло.
- support
- Супермодератор
- Сообщения: 1917
- Зарегистрирован: 03 янв 2018, 11:45
- Откуда: Астрахань
- Имя: Сергей
- Поблагодарили: 23 раза
- Контактная информация:
Пользовательский блок "измерение переменного тока"
А чем вам не нравится запись вида:Dev1 писал(а):Что то новенькое
Код: Выделить всё
digitalWrite(13, (600.00) < (wire));
Автор программы FLProg.
- Dev1
- Майор
- Сообщения: 1045
- Зарегистрирован: 12 июл 2016, 18:04
- Откуда: Гондурас
- Поблагодарили: 3 раза
Пользовательский блок "измерение переменного тока"
Просто я первый раз вижу что бы в digitalWrite в значении использовалось условие. Если у вас есть какие то описания можете кинуть ссылку почитать, сам ничего похожего не нашел.
Win10-64 FLProg v8.2.3 Portable IDE 1.8.19, 2,x,x 

- support
- Супермодератор
- Сообщения: 1917
- Зарегистрирован: 03 янв 2018, 11:45
- Откуда: Астрахань
- Имя: Сергей
- Поблагодарили: 23 раза
- Контактная информация:
Пользовательский блок "измерение переменного тока"
Уже не помню где прочитал, но после проверки опытным путём начал использовать. Да Вы и сами можете проверить, всё работает
Автор программы FLProg.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя