Ви не увійшли.
Сторінки 1
condensator89 пише:https://github.com/esp8266/Arduino
Английского не знаю, да и толком не пойму какой же файл читать. По этому и хотелось бы обзора такого же как и по библиотекам ардуино. Я понимаю, что для меня одного никто этого делать не будет, но может все же где то есть, а я не нашел.
http://arduino.ru/forum/obshchii/ne-mogu-dobavit-v-menedzhere-plat-ide-platy-s-esp8266
http://arduino.ru/forum/programmirovanie/arduino-i-esp8266
http://arduino.ru/forum/apparatnye-voprosy/polzuet-li-kto-wifi-moduli-esp8266-podelites-vpechatleniyami
http://arduino.ru/forum/apparatnye-voprosy/vneshnyaya-antenna-k-esp8266
http://arduino.ru/forum/apparatnye-voprosy/esp8266-v3-c-mikro-usb-pomogite-ozhivit
http://arduino.ru/forum/obshchii/esp8266-lua-loader
https://github.com/esp8266/Arduino
Пропорционально Интегрально Дифференциальный (ПИД) регулятор описывается теорией автоматического управления и регулирования. Это простейший линейный регулятор, для инерционной нагрузки, реализующий оптимальное управление.
И его можно собрать:
- из механических компонентов
- из аналоговых электронных
- из дискретной электромеханической или электронной логики
Это вы так думаете, не зная. Это очень не просто и невозможно сделать без электронных технологий.
Да, без электронных в разы сложнее и не все возможно реализовать в премлемом виде.
Ничто не мешает инженеру собрать конечный автомат или процессор из дискретных электронных или электромеханических (малонадежная трещотка) вентилей :-)
я хотел уточнить!мне покдлючать к нормально-замкнутым на реле?
Бодя, вы сегодня пили кисель ?
Если поставлена цель замкнуть исполнительную цепь в реле с Н.Р. контактами, то нужно подать напряжение на обмотку.
Н.З. используют если хотят, чтобы исполнительная цепь осталась замкнутой при пропадании управляющего напряжения, гибели ардуины и тд.
Давно, еще в юности, работая наладчиком, я ремонтировал и настраивал термостаты диффузионных печей, при 1400С точность 0.5С. Такое без ПИДа не получается. Регуляторы тогда были без всяких микрокомпьютеров. Вспомнилось.
Механический термостат он и есть ПИД-регулятор, но у него, как правило, проблема с диференциальной (оценка тенденции) составляющей .
Если нет микроконтроллера, регулятор температуры с любой логикой можно сделать хоть на столбике градусника, триггерах из ТТЛ или реле и фотодиодах :-)
Будет винтажный регулятор - конечный автомат.
Когда фермер руками форточку открывает и дрова в печку подкладывает, вот вам и весь ПИД!
Простейший бытовой ПИД-регулятор: человек решил помыться в теплом душе при скачках давления холодной и горячей воды и без механического термостата-смесителя.
автор темы
что лично вы уже предприняли, чтобы узнать как это сделать?
condensator89 пише:Окирительный научный труд буклет за авторством доцента.
Такая нынче наука у нас ... ардуиновая.
Он там ищщо буклет разбавил Овеновскими ПИД-регуляторами
Вот один пример творчества официальной науки. http://uhbdp.org/images/uhbdp/pdf/2016.12.09_Energodar/02.2_Kashkarev.pdf
Окирительный научный труд буклет за авторством доцента.
Пускай поинтересуется на западном рынке сколько стоит заказной инженерный проект подобного рода, прежде чем говорить о рыночной стоимости.
Заказной проект стоит дорого не только на западном рынке. А некоторые "заказчики" надеются мыслить категориями "100 долларов" - купите на них всё и ни в чем себе не отказывайте :-)
Возможно она выключается только после завершения передачи буферов. А поскольку они все время заполняются то "спать некогда".
имхо не так, ибо
1) Функция write() дожидается окончания передачи и и чистит за собой буфер передачи , и только после этого возвращает управление вызывающей программе.
2) Есть еще функция startWrite(), которую использует write(), она начинает передачу и возвращает управление вызывающей программе не дожидаясь завершения.
Может быть она засыпает, нечаянно? Я серьезно. Как иначе объяснить отсутствие реакции на ре-инициализацию.
Вячеслав Азаров, спасибо.
Ваша догадка насчет спячки подтвердилась во всем кроме "нечаянно": в конце функции write() обнаружен вызов powerDown();
Однако , в описании библиотеки сказано:
void RF24::powerDown ( void )
Enter low-power mode.
To return to normal power mode, either write() some data or startListening, or powerUp().
, то есть первый же вызов write() должен вывести из спячки. В реальности этого не происходит, поэтому перед вызовом write() добавил powerUp() и проблема исчезла;
Осталось понять странный глюк: почему после выполнения powerDown() при следующем без задержки вызове write() проблема не проявлялась. Как Вы думаете?
Восстанавливается только для передачи первого пакета, а после delay или любой задержки, в том числе на выполнение следующего кода, опять рушится. Управляю опосредованно через библиотеку функциями "высокого" уровня.
Библиотек RF24 на github великое множество и ХЗ какая оригинальная и сопровождаемая авторами.
Вам доводилось работать с NRF24L01+?
Дополню: основная беда в том, что даже если отправляьб пакеты непрерывно, то при возникновении случайной задержки в программе TX, NRF теряет работоспособность
Если возможно подскажите, как можно сделать, чтоб при пропадании (сбое) связи в моем скетче пины 6,7,8 принимали значение HIGH.
Очень просто:
1) в конце setup() установи значение таймаута на отсутствие приема: mytimeout=500; //в милисекундах
и last_time=0;
2) в основной программе запоминай время последнего принятого пакета last_time=millis();
3) вычисли разницу времени между last_time и текущим временем dt=millis()-last_time;
4) if(dt >= mytimeout) { /* отключи то, что хотел отключить*/;;; } else;
5) помни про возможное переполнение счетчика у функции millis()
Прошу помощи - NRF24L01+ перестает работать если отправлять пакеты редко и уверенно работает если их отправлять непрерывно без задержки.
В приведенном ниже примере я отключил подтверждение приема setAutoAck(false) на тот случай, если согласившийся протестировать не имеет вторую NRF и вторую ардуину.
Включение подтверждение приема setAutoAck(true) приведет к необходимости задействовать вторую ардуину и вторую NRF, но ничего не меняет.
Как только включаю задержку >= 15 мсек delay(100) ... delay(1000) , перестает работать передача, это видно по статусу возврата функции write(buf,32) через свечение RED LED и также видно со стороны приемника.
Тактовая частота контроллера 16 Мгц.
Повторная инициализация NRF не помогает.
Причину найти не могу, прошу помощи форумчан ....
// file TX_PING_TEST. INO
#include "nRF24L01.h"
#include "SPI.h"
#include "RF24.h"
const uint64_t pipe = 'ABCDEFG';
uint8_t buf[32];
/*
схема соединений для Mega2560 и Uno:
GND -> GND
VCC -> +3,3V
MISO -> MISO
MOSI -> MOSI
SCK -> SCK
IRQ не подключен
CE -> CE_PIN см для UNO или Mega
SS -> SS_PIN см для UNO или Mega
*/
// для Mega2560:
RF24 RA(49,53); // CE_PIN,SS_PIN
//для Uno:
// RF24 RA(8,10); // CE_PIN,SS_PIN
void setup(void)
{
init_leds();
init_TX();
int i; for(i=0; i<32; i++) {buf[i]=0xFF;}
}
void loop(void)
{
switch(RA.write(buf,32))
{ case false: digitalWrite(14,HIGH); digitalWrite(16,LOW); break;
case true: digitalWrite(16,HIGH); digitalWrite(14,LOW); break;
}
delay(1); // задержка в 1 мсек не влияет на качество работы
// delay(100); //как только включаю задержку > 15-20 мсек , перестает работать передача,
// это видно по статусу возврата RA.write(buf,32) через RED LED и также со стороны приемника
// init2_TX(); // после включения delay() переинициализация NRF не помогает...
}
void init_TX()
{
RA.begin();
init2_TX();
}
void init2_TX()
{
//RA.setAutoAck(true);
RA.setAutoAck(false);
RA.setDataRate(RF24_1MBPS);
RA.setCRCLength(RF24_CRC_16);
RA.setChannel(66);
RA.openWritingPipe(pipe);
//RA.printDetails();
}
void init_leds()
{
pinMode(14, OUTPUT);
pinMode(15, OUTPUT);digitalWrite(15,LOW);// GND для LED, использую один трехногий GREEN+RED светодиод, его
//средний вывод общий минус (катод), а два крайние аноды (положительные) для GREEN и RED
pinMode(16, OUTPUT);
// проверка LED при старте
digitalWrite(16,HIGH); delay(20); digitalWrite(16,LOW); delay(100); digitalWrite(16,HIGH); delay(20); digitalWrite(16,LOW);delay(500);
digitalWrite(14,HIGH); delay(20); digitalWrite(14,LOW); delay(100); digitalWrite(14,HIGH); delay(20); digitalWrite(14,LOW);delay(500);
}
Сторінки 1