Полная приборная панель для старой машины

Magflip
Пт 17 ноября 2017 г., 17:54
Привет, ребята!
Меня зовут Фелипе, я из Бразилии, и мой проект состоит из новой панели приборной панели для моей старой Volkswagen Gol 1989.
Оригинальная панель инструментов имеет только некоторую информацию, а теперь, когда у автомобиля есть турбо, я подумал о создании новой панели инструментов, которая предоставила бы больше информации. Оригинальный двигатель использовал карбюратор, но рядом с установкой турбо была адаптирована электронная инъекция Megasquirt MS1.
Я уже частично преуспел, соединив Arduino Uno (а затем Mega2560) с MegaSquirt, используя Bluetooth -модули HC05 и HC06. Я смог получить информацию от Megasquirt и просмотреть их на ЖК -дисплеях без каких -либо трудностей.
Тем не менее, я намерен сделать полную приборную панель, включая аналоговые датчики (для спидометра и оборотов). Эти датчики будут работать с Switec Step Motors, подходящими для этой цели.
Из -за размера и сложности кода стало невозможно использовать Arduino (он не мог обработать данные, полученные из модуля электронного впрыска, одновременно контролируйте 3 -этапные двигатели и отправили их на дисплей Nextion) . Именно в то время я начал для STM32 (в настоящее время я использую общую «синюю таблетку» STM32F103C).
Я смог успешно сообщить STM32 с MegaSquirt. Я также смог сделать данные доступными на дисплее Nextion, но в этот момент мои проблемы начались. Некоторые переменные, отправленные на дисплей, имеют тип плавания (который, как я думаю, не поддерживается дисплеем), поэтому я должен выполнить некоторые «маневры» в коде, чтобы предоставить информацию, доступной в виде строки, и этот процесс вызывает Выполнение кода становится медленнее, чем я хотел бы.
Кроме того, мне не удалось использовать собственные библиотеки Switec для Arduino в STM32.
Финальный проект будет состоять из панели панели с:
1. Аналоговый манометр скорости: VSS подключен к STM32 для определения скорости; (Код еще не реализован)
2. RPM аналогового уровня: информация из MegaSquirt, которая будет подключена к STM32; (Код еще не реализован)
3. Аналоговый уровень уровня топлива: резистивный датчик в топливном баке, подключенный к STM32; (Код еще не реализован)
4. Аналоговый датчик температуры охлаждающей жидкости: информация от мегасквирт, которая будет подключена к STM32; (Код еще не реализован)
5. ЖК -дисплей Nextion: будет отображать некоторую информацию, такую ​​как значение давления турбо, напряжение батареи, размер импульса сопла и т. Д., Все отправлено Megasquirt к STM32.
Если я не смогу использовать библиотеку Step Motor в STM32, я подумал, что подключу Arduino Uno к STM32 (через I2C) и управляю шаговыми двигателями через Arduino. Что вы думаете?
Поскольку я не родной программист, я знаю, что мой код далеко не идеален, и поэтому я хотел бы помочь улучшить его. Любые другие предложения о проекте также приветствуются.
#define Nextion Serial int kpa, clt, afr, maxkpa, maxclt, lolambda, hilambda, lobatt, hibatt, lopulse, hipulse, loboost, hiboost, lopw, hipw, percentrpm2; int stt = 0; int resetcounter = 0; String boost2; String batt2; String pw2; String lambda2; int i; char buff[10]; float lambda, kmh, boost, batt, pw, percentrpm; unsigned int iTimefull, RpmHitmp, RpmHiRes , iTimeX, iTime, rpm2; unsigned long lastupdate = millis(); bool lambdast, cltst; byte dados[42]; //calling megasquirt array of 42 bytes int cltadc[255] = {435.4, 369.4, 334.8, 311.7, 294.7, 281.2, 270.1, 260.7, 252.6, 245.4, 239.0, 233.2, 228.0, 223.2, 218.7, 214.6, 210.7, 207.1, 203.7, 200.5, 197.5, 194.6, 191.8, 189.2, 186.7, 184.3, 182.0, 179.8, 177.6, 175.6, 173.6, 171.7, 169.8, 168.0, 166.2, 164.5, 162.9, 161.3, 159.7, 158.2, 156.7, 155.2, 153.8, 152.4, 151.0, 149.7, 148.4, 147.1, 145.8, 144.6, 143.4, 142.2, 141.0, 139.9, 138.8, 137.7, 136.6, 135.5, 134.4, 133.4, 132.4, 131.4, 130.4, 129.4, 128.4, 127.4, 126.5, 125.6, 124.6, 123.7, 122.8, 121.9, 121.0, 120.2, 119.3, 118.5, 117.6, 116.8, 115.9, 115.1, 114.3, 113.5, 112.7, 111.9, 111.1, 110.3, 109.6, 108.8, 108.0, 107.3, 106.5, 105.8, 105.0, 104.3, 103.6, 102.9, 102.1, 101.4, 100.7, 100.0, 99.3, 98.6, 97.9, 97.2, 96.5, 95.8, 95.2, 94.5, 93.8, 93.1, 92.5, 91.8, 91.1, 90.5, 89.8, 89.1, 88.5, 87.8, 87.2, 86.5, 85.9, 85.2, 84.6, 84.0, 83.3, 82.7, 82.0, 81.4, 80.8, 80.1, 79.5, 78.9, 78.3, 77.6, 77.0, 76.4, 75.7, 75.1, 74.5, 73.9, 73.2, 72.6, 72.0, 71.4, 70.7, 70.1, 69.5, 68.9, 68.2, 67.6, 67.0, 66.3, 65.7, 65.1, 64.5, 63.8, 63.2, 62.6, 61.9, 61.3, 60.6, 60.0, 59.4, 58.7, 58.1, 57.4, 56.8, 56.1, 55.5, 54.8, 54.2, 53.5, 52.9, 52.2, 51.5, 50.8, 50.2, 49.5, 48.8, 48.1, 47.4, 46.7, 46.0, 45.3, 44.6, 43.9, 43.2, 42.5, 41.8, 41.0, 40.3, 39.6, 38.8, 38.1, 37.3, 36.5, 35.8, 35.0, 34.2, 33.4, 32.6, 31.8, 30.9, 30.1, 29.3, 28.4, 27.5, 26.7, 25.8, 24.9, 23.9, 23.0, 22.1, 21.1, 20.1, 19.2, 18.1, 17.1, 16.1, 15.0, 13.9, 12.8, 11.7, 10.5, 9.3, 8.1, 6.8, 5.6, 4.2, 2.9, 1.5, 0.0, -1.5, -3.1, -4.7, -6.4, -8.1, -10.0, -11.9, -13.9, -16.1, -18.3, -20.8, -23.4, -26.2, -29.2, -32.6, -36.4, -40.6, -45.6, -51.5, -58.9, -68.9, -85.1, 9999}; void setup() { Serial1.begin(9600); //conexão bluetooth com a mega Serial2.begin(9600); //conexão bluetooth com a mega Nextion.begin(9600); //conexão com o display nextion printtext("alarm.txt=", "CONNECTING"); delay(3000); printtext("alarm.txt=", "PAIRING"); delay(6000); } void loop() { Serial1.print("R"); delay(150); if (Serial1.available() >= 41) //verifica a disponibilidade de dados enviados pela mega { for (int i = 0; i < 41; i++) { dados[i] = Serial1.read(); } // tratando os dados recebidos da mega //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ** ** * * * * * * * * * * * * * * * * * * ** * * kpa = (dados[4] + 2.147) * 1.6197783; // para sensor map mpxh6400 if (kpa > maxkpa) maxkpa = kpa; if (maxkpa <= 94) { boost = 0; } else { boost = ((maxkpa - 94) / 100); } //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ** ** * * * * * * * * * * * * * * * * * * ** * * pw = dados[14]; // in segundos //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ** ** * * * * * * * * * * * * * * * * * * ** * * iTimeX = dados[39]; iTime = dados[24]; //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ** ** * * * * * * * * * * * * * * * * * * ** * * lambda = ((dados[9] * 0.002770) + 0.6217); //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ** ** * * * * * * * * * * * * * * * * * * ** * * if (millis() > lastupdate + 5000) { batt = (3 * (dados[8]) / 25.5); clt = (cltadc[dados[6] - 1] - 32) / 1.8; if (clt > maxclt) { maxclt = clt; } lastupdate = millis(); } //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ** ** * * * * * * * * * * * * * * * * * * ** * * } //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ** ** * * * * * * * * * * * * * * * * * * ** * * rpmfunction(); //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ** ** * * * * * * * * * * * * * * * * * * ** * * printvariables(); //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ** ** * * * * * * * * * * * * * * * * * * ** * * pw2 = floattostring7(pw); boost2 = floattostring(boost); batt2 = floattostring(batt); lambda2 = floattostring(lambda); /* if (RpmHiRes < 1500){ rpm2 = map(RpmHiRes,0,1499,328,359); } else{ rpm2 = map(RpmHiRes,1500,8000,0,212); }*/ percentrpm = int(RpmHiRes * 100 / 7000); percentrpm2 = int(percentrpm); Serial1.flush(); } int printvariables() { printval("speed.txt=", 000); printval("kpa.txt=", kpa); printval("clt.txt=", clt); printtext("batt.txt=", batt2); printtext("max_boost.txt=", boost2); printval("max_clt.txt=", maxclt); printtext("pw.txt=", pw2); printval("rpm2.txt=", RpmHiRes); // printval("rpm.val=", rpm2); Nextion.print("rpm.val="); //Nextion.write(0x22); Nextion.print(percentrpm2); //Nextion.write(0x22); Nextion.write(0xff); Nextion.write(0xff); Nextion.write(0xff); if (lambda > 0.65) { printtext("lambda.txt=", lambda2); } else { printtext("lambda.txt=", "heating"); } } void printval(const char* str, int val) { Nextion.print(str); Nextion.write(0x22); Nextion.print(String(val)); Nextion.write(0x22); Nextion.write(0xff); Nextion.write(0xff); Nextion.write(0xff); } void printtext(const char* str, String val) { Nextion.print(str); Nextion.write(0x22); Nextion.print(val); Nextion.write(0x22); Nextion.write(0xff); Nextion.write(0xff); Nextion.write(0xff); } long rpmfunction() { iTimefull = iTimeX + iTime; if (iTimefull > 0) { RpmHitmp = (120000 / (iTimefull)); } else { RpmHitmp = 0; } if (RpmHitmp > 20) { RpmHiRes = RpmHitmp; } else { RpmHiRes = 0; } return RpmHiRes ; } String floattostring(float var) { for (i = 0; i < 10; i++) { dtostrf(var, 4, 2, buff); //4 is mininum width, 6 is precision return buff; } } String floattostring7(float var) { for (i = 0; i < 10; i++) { dtostrf(var, 4, 5, buff); //4 is mininum width, 6 is precision return buff; } }

Rogerclark
Пт 17 ноября 2017 г. 20:29
Спасибо за публикацию.

На форуме есть 4 или 5 человек, которые строят автомобильные дисплеи.

По крайней мере, один другой человек пытался использовать дисплей Nexion, но я думаю, что у этого также есть проблемы с ним :-(

Стивестронг
Сб 18 ноября 2017 г. 11:13
Сначала вы должны иметь основные вещи, как разные типы переменных (int, uint8_t, float,...).

Вы используете много массивов/переменных Int и занимаетесь математикой со значениями плавания, : шок:
Таким образом, все эти значения поплавка будут сведены до целых чисел.

Я лично рекомендую всегда указывать типы переменных по ширине бита, например:
uint8_t, uint16_t, uint32_t, float.
Затем вы можете увидеть сразу, где значения могут недооценивать или ограничить разрешение.

Magflip
Вт 21 ноября 2017 г., 19:26
[Стивестронг - Сб 18 ноября 2017 г. 11:13] - Сначала вы должны иметь основные вещи, как разные типы переменных (int, uint8_t, float,...).

Вы используете много массивов/переменных Int и занимаетесь математикой со значениями плавания, : шок:
Таким образом, все эти значения поплавка будут сведены до целых чисел.

Я лично рекомендую всегда указывать типы переменных по ширине бита, например:
uint8_t, uint16_t, uint32_t, float.
Затем вы можете увидеть сразу, где значения могут недооценивать или ограничить разрешение.
Спасибо за советы. Я рассмотрю эту часть кода.


В эти последние дни я работал немного больше над проектом и получил некоторую эволюцию.
В ближайшие несколько дней я намерен установить автомобиль следующим образом: STM32 будет питаться регулятором напряжения, который поднимет питание непосредственно из аккумулятора (12 В). Дисплей Nextion будет иметь свой собственный источник питания таким же образом, используя соответствующий регулятор напряжения.
Сила будет возникнуть только тогда, когда ключ зажигания включена. С полным ключом, система будет «полностью» отключена. Таким образом, при стационарном автомобиле, датчик RPM будет указывать, например, 950 об / мин, и, если ключ отключен, датчик будет продолжать указывать ~ 950 об / мин, даже после выключения автомобиля.
Тем не менее, я подумал о системе, которая держит STM32 работать в течение 1 или 2 секунды после того, как зажигание будет выключено, пока не вернет шаговые двигатели и сервопривод в начальную позицию (0 км / ч, 0 об / мин и т. Д.). Могла бы схема с конденсатором 0.1f сможет привлечь STM32 для выполнения этих задач? Как будет выглядеть схема соединения? Любой другой способ обойти это?

Ахулл
Ср 22 ноября 2017 г., 2:43
Я подозреваю, что вам понадобится конденсатор из нескольких сотен UF, чтобы запустить STM в течение достаточного времени после того, как 12 В уйдет.
Вам также понадобится какая -то форма обнаружения продукта, на линии 12 В (вы можете уйти с опроса простого разделителя напряжения с аналогового входа), чтобы вы знали, что сила ушла. Размер вашего конденсатора будет зависеть от того, как долго вам нужно, чтобы STM работал, чтобы обновить дисплей.

Вы также можете позволить STM контролировать свою собственную мощность, либо с помощью реле защелкивания, либо с помощью режимов низкой мощности STM32 и сохраняя его навсегда, но сна. В режиме низкой мощности STM может выпить несколько UA, поэтому он не будет истощать батарею 12 В.

Magflip
Ср 22 ноября 2017 г., 17:04
[Ахулл - Ср 22 ноября 2017 г. 2:43] - Я подозреваю, что вам понадобится конденсатор из нескольких сотен UF, чтобы запустить STM в течение достаточного времени после того, как 12 В уйдет.
Вам также понадобится какая -то форма обнаружения продукта, на линии 12 В (вы можете уйти с опроса простого разделителя напряжения с аналогового входа), чтобы вы знали, что сила ушла. Размер вашего конденсатора будет зависеть от того, как долго вам нужно, чтобы STM работал, чтобы обновить дисплей.

Вы также можете позволить STM контролировать свою собственную мощность, либо с помощью реле защелкивания, либо с помощью режимов низкой мощности STM32 и сохраняя его навсегда, но сна. В режиме низкой мощности STM может выпить несколько UA, поэтому он не будет истощать батарею 12 В.
Спасибо за предложения, ахалл!
Я изучил немного больше о возможностях, которые вы предложили, и мне было интересно оставить STM32 всегда, но в «режиме экономики», когда автомобиль выключен.
Затем я подумал о том, чтобы сделать следующее соединение: STM32 всегда питается батареей 12 -вагонов автомобиля (с помощью регулятора напряжения). Прямое соединение (через делитель напряжения) от «Ключ зажигания» к контакту PB1, например, чтобы контролировать, когда ключ зажигания включена. С функцией прикрепления к этому штифту, если сигнал становится низким, я возвращаю пошаговые двигатели и сервоприводы в начальное положение и активно активно. Расширение этого соединения с PB1 будет сделано в PA0 PIN (WKUP) для сброса STM32, когда включен ключ зажигания.
Если эта схема сработает или я ошибаюсь?

Еще одна вещь, которую я видел во время обысков, была библиотека STM32SELE в Чакале. Из того, что я понимаю, он отключает некоторые функции платы, чтобы сэкономить больше энергии, верно? Оптимизирует ли он сохранение мощности режима ожидания или для моего дела, он не подходит?

Спасибо!

Rogerclark
Ср 22 ноября 2017 г., 19:50
Я не уверен, что вы используете и адаптер OBD, но я оставил один из этих адаптеров Bluetooth OBD, подключенными к моей машине в течение нескольких месяцев, и обнаружил, что однажды автомобиль не запускается, потому что батарея была плоской

Первоначально я думал, что генератор был неисправным, но в конечном итоге понял, что OBD истощал аккумулятор на все время в течение нескольких месяцев и месяцев, и потому что я дон’ТО много вождения в автостраде, и все ограничения скорости продолжают уменьшаться, автомобиль недостаточно заряжал батарею.

Это было усугублено, потому что я езжу на руководство и помещаю машину в верхнюю передачу (5 -е место), как только я достигнут 40 км / ч, и многие дороги здесь имеют только ограничение скорости 50 км, поэтому обороты на двигателе меньше, чем, чем 1500, и генератор не зарядил много заряда.
И для дальнейшего укрепления вещей у нас есть несколько уровней пересечений рядом со мной, где вам приходится ждать возраста для ворот бума, поэтому я выключал двигатель, чтобы сэкономить топливо (как и все современные автомобили автоматически)

К сожалению, Subaru не был предназначен для того, чтобы заряжать батарею в этих условиях

Magflip
Ср 22 ноября 2017 г. 20:34
[Rogerclark - Ср 22 ноября 2017 г., 19:50] - Я не уверен, что вы используете и адаптер OBD, но я оставил один из этих адаптеров Bluetooth OBD, подключенными к моей машине в течение нескольких месяцев, и обнаружил, что однажды автомобиль не запускается, потому что батарея была плоской

Первоначально я думал, что генератор был неисправным, но в конечном итоге понял, что OBD истощал аккумулятор на все время в течение нескольких месяцев и месяцев, и потому что я дон’ТО много вождения в автостраде, и все ограничения скорости продолжают уменьшаться, автомобиль недостаточно заряжал батарею.

Это было усугублено, потому что я езжу на руководство и помещаю машину в верхнюю передачу (5 -е место), как только я достигнут 40 км / ч, и многие дороги здесь имеют только ограничение скорости 50 км, поэтому обороты на двигателе меньше, чем, чем 1500, и генератор не зарядил много заряда.
И для дальнейшего укрепления вещей у нас есть несколько уровней пересечений рядом со мной, где вам приходится ждать возраста для ворот бума, поэтому я выключал двигатель, чтобы сэкономить топливо (как и все современные автомобили автоматически)

К сожалению, Subaru не был предназначен для того, чтобы заряжать батарею в этих условиях
Спасибо за сотрудничество, Роджер!
В моем случае соединение не является ODB ... STM32 напрямую связан с последовательными контактами в процессе центрального впрыска.
Его размещение было интересным, потому что мой страх оставлять STM32 включенным все время (даже в режиме ожидания большую часть времени), именно это, исчерпая батарею автомобиля, дальше, потому что автомобиль имеет вторичное использование и редко покидает гараж. В этом смысле идея использования конденсатора «резервного копирования» только для того, чтобы вернуть указатели на исходную позицию, была, пожалуй, самой возможной возможностью.
Еще одна возможность состоит в том, чтобы использовать литий-ионную батарею 2700 мАч 18650, которая будет включать систему, когда основной источник был отключен ...
Что вы думаете? Это жизнеспособно?

Rogerclark
Ср 22 ноября 2017 г. 20:42
Я забыл сказать, что моя проблема была усугублена, оставив машину в аэропорту на месяц, но..

Да. Не оставляйте STM32 работать все время.

Липо звучит хорошо, как в режиме с низкой мощностью / спям, он будет работать в течение многих месяцев на батареи 2000 мАч.

Вероятно, все время запустите его от батареи и заряжайте аккумулятор, когда автомобиль работает..и используйте один штифт GPIO в качестве смысла, когда автомобиль работает.
я.E запустите пробуждение от сна, когда эта линия поднимается высокой, а затем в вашем коде установите прерывание для этой линии, и перейдите в режим сна, когда это произойдет

Ахулл
Ср 22 ноября 2017 г., 21:01
Вы можете использовать реле и пару оптоизоляторов параллельно. Зажигание переключается на один оптоизолятор, который обеспечивает питание для реле, реле затем обеспечивает питание для питания/регулятора 5V для STM, что, в свою очередь, включает в себя OptoIsolator 2, который параллельно с OptoIsolator 1 (оба наступают. в серии с реле катушкой). (Вам может понадобиться пара диодов, чтобы остановить два транзистора по оптоизоляторам от жарки друг друга, я строю эту цепь в своей голове, когда ввода.. Таким образом, вам понадобится доказательство концепции, должно быть установлено на оборудовании).

Когда зажигание сработает, то же самое и OptoIsolator 1, но это не убивает силу для STM, поскольку теперь он поддерживает себя с помощью оптоизолятора 2, управляющего реле источника питания 5V.. Когда STM сделал свой пост «зажигание», домашнее хозяйство, затем выключает второй оптоизолятор и убивает свою собственную власть. На этом этапе система полностью отключена от питания. Он просыпается только снова, когда питание повторно нанести, и оптоизолятор 1 снова запускается.

Вы можете сделать тот же трюк с реле 12 В и 5 В или 3V3 с их обычно открытыми контактами параллельно. При зажигании реле 12V закрывает контакты и обеспечивает мощность, PSU для 5V для STM и 5V для реле STM просыпается, когда 5V включается, STM переключается на реле 5V, а его контакты обеспечивают альтернативу STM и маршрут питания реле 5 В, поскольку реле 5 В обычно открытые контакты параллельно с реле 12 В обычно открытые контакты. Реле 12V и 5V должны открываться до того, как мощность будет полностью сокращена, и, поскольку STM контролирует реле 5V, он убивает свою собственную силу только после того, как его работа будет выполнена.

Если вы не можете получить голову по моему описанию, дайте мне знать, и если у меня будет немного времени, я попробую схему.

Rogerclark
Ср 22 ноября 2017 г., 21:09
Энди

Почему сила должна быть физически удалена из STM32 ?

Не просто поместит его в режим низкой мощности, значительно сократите потребление тока ?

Magflip
Ср 22 ноября 2017 г., 21:14
[Ахулл - Ср 22 ноября 2017 г. 9:01 вечера] - Вы можете использовать реле и пару оптоизоляторов параллельно. Зажигание переключается на один оптоизолятор, который обеспечивает питание для реле, реле затем обеспечивает питание для питания/регулятора 5V для STM, что, в свою очередь, включает в себя OptoIsolator 2, который параллельно с OptoIsolator 1 (оба наступают. в серии с реле катушкой). (Вам может понадобиться пара диодов, чтобы остановить два транзистора по оптоизоляторам от жарки друг друга, я строю эту цепь в своей голове, когда ввода.. Таким образом, вам понадобится доказательство концепции, должно быть установлено на оборудовании).

Когда зажигание сработает, то же самое и OptoIsolator 1, но это не убивает силу для STM, поскольку теперь он поддерживает себя с помощью оптоизолятора 2, управляющего реле источника питания 5V.. Когда STM сделал свой пост «зажигание», домашнее хозяйство, затем выключает второй оптоизолятор и убивает свою собственную власть. На этом этапе система полностью отключена от питания. Он просыпается только снова, когда питание повторно нанести, и оптоизолятор 1 снова запускается.

Вы можете сделать тот же трюк с реле 12 В и 5 В или 3V3 с их обычно открытыми контактами параллельно. При зажигании реле 12V закрывает контакты и обеспечивает мощность, PSU для 5V для STM и 5V для реле STM просыпается, когда 5V включается, STM переключается на реле 5V, а его контакты обеспечивают альтернативу STM и маршрут питания реле 5 В, поскольку реле 5 В обычно открытые контакты параллельно с реле 12 В обычно открытые контакты. Реле 12V и 5V должны открываться до того, как мощность будет полностью сокращена, и, поскольку STM контролирует реле 5V, он убивает свою собственную силу только после того, как его работа будет выполнена.

Если вы не можете получить голову по моему описанию, дайте мне знать, и если у меня будет немного времени, я попробую схему.

Еще раз, спасибо за сотрудничество, ахалл !

Я даже начал следовать рассуждениям, но в середине того, как я в итоге потерял себя, и как бы я ни читал несколько раз, я не мог понять, на что похожа эта схема. Я был бы признателен, если бы вы могли мне помочь.

Ахулл
Чт 23 ноября 2017 г. 1:06
Вот аналогичная (возможно, лучше) идея с использованием двух морских мер.

http: // www.Мозаичная индустрия.com/enddd ... Включение

Описание того, как это работает, должно дать вам несколько идей.

Моя идея немного проще, одна деталь, которую я забыл прояснить канал 12V для подачи 5 В, не переключается за зажигание, подача 12V для реле 12V - это.

У меня может быть шанс набросать схему завтра, но это выглядит как напряженный день, поэтому мы посмотрим, как это происходит.

Ореховый
Пт 22 декабря 2017 г. 12:59
Я думаю, что Роджер, возможно, думал обо мне, когда упоминал людей... Набирая на мой телефон так голый со мной...

В настоящее время мои проекты остановились... Получение третьей стороны, чтобы посмотреть на мой дизайн дисплея. Посмотри, сможет ли он заставить это работать...

Сейчас. Я не рекомендую Nextion... Я действительно работал над моим проектом, но у него есть действительно серьезные ограничения, если вы хотите получить приличную графику.

Нет детей. Так что быстро меняющаяся информация будет плохо. Нет надлежащей альфа -поддержки тоже. Так сложно, что элементы притирания не сработают. Ужасная громоздкая библиотека. Это кошмар для строительства с.

Я рекомендую, перейти с дисплеем FTDI EVE. Это сложнее построить, но вы получите гораздо лучшие графические результаты и больше контроля. У вас также есть доступ к целому ряду кода манипуляции с изображениями, который действительно может выдвинуть верность вашей работы. Также правильные элементы управления вращением в отличие от Nextion.

Недостатком, чтобы идти с Евой, это стоит дороже. Что остановилось, мой проект я сделал пользовательскую плату отображения с помощью чипа контроллера Евы, но я изо всех сил пытаюсь получить дисплей крышки, который я решил правильно функционировать на нем. Было бы разумно купить подготовку... Несколько доступны. Bridge Tech сделайте несколько, а также Hotmcu... Это немного больше кривой обучения, но оно того стоит.

Ореховый
Пт 22 декабря 2017 г. 1:04
Это занял минутку, но я понял, что сказал Энди... Ура, я начинаю...

Это довольно крутая идея. Мне может придется запустить это: P

Беннебой
Чт 28 декабря 2017 г. 6:46 утра
@ahull, по -видимому, с использованием режима низкой мощности потребует блока питания, который может работать с таким низким рисованием мощности... т.е. ОП должен быть осторожным с тем, что он выбирает, если он пойдет по этому маршруту.

Ахулл
Пт 29 декабря 2017 г. 11:28 утра
[Беннебой - Чт 28 декабря 2017 г. 6:46] - @ahull, по -видимому, с использованием режима низкой мощности потребует блока питания, который может работать с таким низким рисованием мощности... т.е. ОП должен быть осторожным с тем, что он выбирает, если он пойдет по этому маршруту.
Это хороший момент. Такие вещи, как силовые банки, сдаются и разрезают мощность, когда текущая рисунка опускается ниже определенного уровня, поэтому вы можете оказаться буквально бессильными, если источник «умный» в любом смысле.

STM32duino 6502 эмулятор