avatar_Slider

Контроллер света для электротранспорта "Геликон"

Автор Slider, 03 Авг. 2012 в 10:44

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

-Владимир-

#180
ЦитироватьТо есть одна земля, и 4 сигнальных.
вот это меня и интересует. Какого цвета провод что включает. И для заднего фонаря -какой сигнальник под что запрограммирован. А то задача с двумя неизвестными-сиди и подбирай -там замкнул что замигало- ага не то переподключать и по-новой.
Сейчас мотор eZee 300 ( или МАС 10т) . Акб 20s lipo 10 Ач.  Максимальная скорость , на полностью заряженном АКБ, без внешних воздействий 70 км/ч. Пробег при тапке в пол около 15 км.  Кому интересно вэлкам https://www.strava.com/athlete/training#_=_

zap

#181
Владимир, я прошу прощения за недостаток информации.
Планировал переделать документацию Геликона под вторую версию, но неожиданно сломал ключицу; лежу в больнице, документацию доделать не успел :-(.
Сейчас вот отпросился на сбт-вск, поэтому появился ненадолго доступ к компу.
Нарисовал раскладку основных разъёмов Геликона второй версии.
Разъём программирования совпадает с разъёмом программирования Infineon (Геликон совместим с программаторами и для второй, и для третьей версии).

Красно-чёрный двухконтактный разъём - батарейное питание (плюс батареи - красный, земля - чёрный).
Остальные вот:
С уважением,
Андрей

Поражаю масштабностью некопмпетентность (ц) из лички

-Владимир-

[user]zap[/user],  Спасибо , Андрей. Я не знал, что у Вас перелом да ещё такой серьёзный , иначе бы не стал дёргать-методом вскрытия и тыка по-тихонечку всё нашел бы.
Выздоравливайте!
P.S.  травма связана с аварией на велике?
Сейчас мотор eZee 300 ( или МАС 10т) . Акб 20s lipo 10 Ач.  Максимальная скорость , на полностью заряженном АКБ, без внешних воздействий 70 км/ч. Пробег при тапке в пол около 15 км.  Кому интересно вэлкам https://www.strava.com/athlete/training#_=_

zap

[user]-Владимир-[/user], подробности тут.
В среду (предварительно) выпустят из больницы. По нынешним временам это уже не такая уж тяжёлая травма :) хотя как минимум на месяц придётся забыть про элвел.
С уважением,
Андрей

Поражаю масштабностью некопмпетентность (ц) из лички

-Владимир-

[user]zap[/user],  У меня ещё возникли проблемы с установкой ПО для программирования геликона. Я не особо силён в компьютерах. Всё делал по описанию. Но программа в папку \ program file не распаковывается. Распаковал в корень диска. В эту же папку всё остальное и дальше фигушки. Перенёс папку в program file  . Эффект тот же. При клике на иконку -она открывается в плеере и ничего не запускает.  Короче моих познаний не хватает, чтобы осилить эту вещь.
Сейчас мотор eZee 300 ( или МАС 10т) . Акб 20s lipo 10 Ач.  Максимальная скорость , на полностью заряженном АКБ, без внешних воздействий 70 км/ч. Пробег при тапке в пол около 15 км.  Кому интересно вэлкам https://www.strava.com/athlete/training#_=_

Kullx

Работает и из корня диска без проблем.
Запускать надо не иконку, а heliprog.pyw.

-Владимир-

#186
И что это значит? Я криво установил? Или баг в программе?
ЦитироватьОпаньки! Случилось непредвиденное, и я не знаю как с этим дальше жить! Пожалуйста, передайте мою предсмертную записку автору:

Traceback (most recent call last):

  File "F:\Program Files\heliprog-0.1.2\heliprog.pyw", line 130, in main
    from heliprogm import gui

  File "F:\Program Files\heliprog-0.1.2\heliprogm\gui.py", line 19, in <module>
    from heliprogm import comports, editor, nanoboot, compile, interpreter

  File "F:\Program Files\heliprog-0.1.2\heliprogm\editor.py", line 24, in <module>
    import pygtk, gtk, gtksourceview2, pango

ImportError: No module named gtksourceview2
Сейчас мотор eZee 300 ( или МАС 10т) . Акб 20s lipo 10 Ач.  Максимальная скорость , на полностью заряженном АКБ, без внешних воздействий 70 км/ч. Пробег при тапке в пол около 15 км.  Кому интересно вэлкам https://www.strava.com/athlete/training#_=_

zap

[user]-Владимир-[/user], вот видео по теме которое сделал для [user]TULSUNDUR[/user].
Установка HeliProg

Конкретно Ваша проблема в том, что Вы забыли установить PyGtkSourceView2 (поставить галочку во время установки PyGTK).
Об этом пишет скрипт инсталляции в окне, но видимо недостаточно красным цветом.
Чтобы распаковать архив в C:\"Program Files" в Windows Vista и Выше необходимо запустить эксплорер с правами администратора.
Как это сделать, тоже есть в видео.
С уважением,
Андрей

Поражаю масштабностью некопмпетентность (ц) из лички

-Владимир-

Ну вот. А то зюйд-зюйд-вест....Пальцем показал и всё понятно.. :-D
Сейчас мотор eZee 300 ( или МАС 10т) . Акб 20s lipo 10 Ач.  Максимальная скорость , на полностью заряженном АКБ, без внешних воздействий 70 км/ч. Пробег при тапке в пол около 15 км.  Кому интересно вэлкам https://www.strava.com/athlete/training#_=_

-Владимир-

 Ещё одну функцию хочу попробовать реализовать с помощью геликона.
В МАСе у меня установлен LM 35. Я так подозреваю его можно завести на аналоговый вход геликона а на выход допустим драйвер  красного светодиода. И прописать в программе алгоритм. Типа при температуре 100 градусов диод включается и при дальнейшем повышении увеличивает яркость. При критической температуре (допустим 120 ) начинает активно мигать ярким светом привлекая внимание.
Надеюсь Zap напишет небольшую статейку на эту тему.
А ещё лучше сразу сценарий для геликончика.
Сейчас мотор eZee 300 ( или МАС 10т) . Акб 20s lipo 10 Ач.  Максимальная скорость , на полностью заряженном АКБ, без внешних воздействий 70 км/ч. Пробег при тапке в пол около 15 км.  Кому интересно вэлкам https://www.strava.com/athlete/training#_=_

zap

Ну, подпрограмки на все случаи я не брался писать :)
Но в качестве урока по HLS можно и написать.



Итак, дано:
В двигателе установлен термодатчик LM35. На выходе такого термодатчика напряжение прямо пропорционально температуре, а именно по 10 милливольт на каждый градус Цельсия. 250 милливольт - 25 градусов, 1000 милливольт - 100 градусов Цельсия и т.д.
Требуется:
При достижении определённого уровня температуры включить и мигать светодиодом. Чем сильнее температура превышает порог, тем чаще мигание.
Для простоты предположим, что имеем простой маломощный светодиод, который можно подключать к выходу Геликона напрямую без драйвера (даже без резистора, ибо он уже имеется внутри самого Геликона).

Итак, первым делом нам надо решить, куда будем соединять входное устройство (датчик температуры) и выходное устройство.
Входное устройство выдаёт аналоговый сигнал, следовательно его надо подсоединить к одному из двух аналоговых входов ADC0 или ADC1.
Выходное устройство не требует управления яркостью, следовательно, можно использовать один из простых выходов, которые могут принимать только состояние ВКЛ и ВЫКЛ.
Выберем ADC0 для подключения аналогового датчика, и SW1 для подключения светодиода индикации.

Теперь надо написать кусок сценария, который будет отвечать за данный функционал.
Итак, первым делом надо настроить диапазон входных напряжений для аналогового входа, а также задать постоянную времени для усредняющего фильтра. Это делается ключевым словом sensor в самом начале сценария, ещё до описания действий:


sensor ADC0 1 1.25

Данная директива говорит, что к каналу ADC0 подключено аналоговое устройство, чьи показания должны усредняться с постоянной времени 1 секунда, и диапазон напряжений этого датчика - до 1.25 вольт (1250 милливольт, или 125 градусов Цельсия). То есть, входные напряжения в диапазоне 0 - 1.25В будут считываться как число в диапазоне от 0 до 255. Если напряжение поднимется выше 1.25В, напряжение будет считываться как значение 255.

Далее, необходимо запустить поток выполнения, в котором будет постоянно отслеживаться температура датчика. Для этого в действие init необходимо добавить соответствующую директиву:

action init
    start THR9 WatchTemperature
    halt

Теперь при запуске Геликона (в момент включения питания) автоматически стартует действие WatchTemperature в потоке THR9 (напомню, что язык HLS позволяет выполнять действия в до пятнадцати параллельных потоках - THR1 до THR15).

Теперь давайте напишем действие WatchTemperature. По сути, нам нужен вечный цикл, в котором мы считываем напряжение датчика, сравниваем с порогами, и мигаем диодом с соответствующим интервалом. Длительность включения диода положим постоянной, например 0.1 сек, а длительность паузы будет зависеть от температуры - при 100 градусах пусть будет около 1.5 секунд, при 125 и выше - 0.1 секунд.
Вычисленную длительность паузы будем хранить, например, в переменной VAR5.

Температура в 100 градусов в наших единицах будет считана как значение (255 * (100/125)) = 204, а температура 125 градусов - как значение 255. Интервал времени в HLS задаётся в единицах по 1/32 секунд, т.е. "64" означает 2 секунды и так далее.
Придумываем следующую формулу:
VAR5 := 3 + (255 - ADC0)

Проверяем:






ТемператураADC0VAR5Задержка, сек
100204541.69
110224341.06
120245130.41
12525530.1

Отлично. Теперь воплощаем теорию в практику:
action WatchTemperature
    use SW1
    forever
        # Считываем значение датчика в переменную ADC5
        sense ADC0 VAR5
        # Если температура ниже 100 градусов, ничего не делаем - засыпаем на 1 сек
        if VAR5 < 204
            delay 1.0
        else
            # Вычисляем задержку
            let VAR5 = 255 - VAR5 + 3
            # Отрабатываем вычисленную задержку
            delay VAR5
            # Включаем индикатор на 0.1 сек
            set SW1 ON
            delay 0.1
        # Выключаем индикатор (независимо от ветки if, по которой пошли)
        set SW1 OFF


Надеюсь, выше всё ясно. Обратите внимание, отступы имеют семантическое значение в языке HLS!
Оператор forever задаёт вечный цикл. Далее считываем напряжение сенсора, сравниваем со значением 204 (100 градусов), если температура меньше - просто засыпаем на 1 секунду и повторяем всё снова. Если выше, тогда вычисляем значение задержки, спим вычисленное время, затем зажигаем индикатор на 0.1 секунду и начинаем цикл сначала.

Ну и в завершение, наведём немножечко марафета на пример, чтобы его можно было проще использовать в случае, если у Вас вход ADC0 уже занят и Вы захотите подключить датчик к ADC1, или выход SW1 занят, или переменная VAR5 уже занята. Для этого
в самом начале сценария опишем все используемые ресурсы мнемоническими названиями, затем будем использовать эти названия вместо конкретных идентификаторов ресурсов. Таким образом, поменяв лишь одну строчку, мы сможем легко переделать сценарий для работы с другим ресурсом. Полный текст сценария:

define SENS_TEMP    ADC0
define SW_TEMPLED   SW1
define V_TEMP       VAR5
define T_TEMPWATCH  THR9

sensor SENS_TEMP 1 1.25

action init
    start T_TEMPWATCH WatchTemperature
    halt

action WatchTemperature
    use SW_TEMPLED
    forever
        # Считываем значение датчика в переменную ADC5
        sense SENS_TEMP V_TEMP
        # Если температура ниже 100 градусов, ничего не делаем - засыпаем на 1 сек
        if V_TEMP < 204
            delay 1.0
        else
            # Вычисляем задержку
            let V_TEMP = 255 - V_TEMP + 3
            # Отрабатываем вычисленную задержку
            delay V_TEMP
            # Включаем индикатор на 0.1 сек
            set SW_TEMPLED ON
            delay 0.1
        # Выключаем индикатор (независимо от ветки if, по которой пошли)
        set SW_TEMPLED OFF


Данный код можно напрямую загрузить в HeliProg и попробовать в работе. После его запуска двигаем ползунок ADC0, и видим что SW1 начинает помаргивать для напряжений выше 1.0 вольт.
С уважением,
Андрей

Поражаю масштабностью некопмпетентность (ц) из лички

-Владимир-

Ну Вот , ещё на несколько вечеров себе занятие придумал-обновить сценарии для геликона.))))
Сейчас мотор eZee 300 ( или МАС 10т) . Акб 20s lipo 10 Ач.  Максимальная скорость , на полностью заряженном АКБ, без внешних воздействий 70 км/ч. Пробег при тапке в пол около 15 км.  Кому интересно вэлкам https://www.strava.com/athlete/training#_=_

zap

С уважением,
Андрей

Поражаю масштабностью некопмпетентность (ц) из лички

Kapitan

Вот эта работа проделана на 5 баллов.  + Хочу такую штучку.   
C наилучшими пожеланиями, Алексей.   Стать партнером Дуюнова и инвестором можно тут: http://reg.solargroup.pro/gda310

acyd

#194
[user]zap[/user], а если термодатчик  KTY81/210  http://www.nxp.com/documents/data_sheet/KTY81_SER.pdf
двухконтактный, подключаем его к аналоговому входу на +5 и ADC0, какие параметры указывать в sensor?
сопротивление у него с ростом температуры растет, значит напряжение будет падать.

zap

KTY81 это просто термистор, примерно 1000 ом при комнатной температуре.
При 150 градусах его сопротивление примерно 2.1 килоома.
Чтобы преобразовать сопротивление в напряжение, надо сделать делитель напряжения из двух резисторов, один из которых будет термистором.
Значит термистор соединяем одним концом на землю, другим концом к резистору на 7.5к или больше.
Второй конец резистора кидаем на +5В.
Точку соединения термистора с резистором заводим на вход АЦП.

При температуре 25 градусов на входе АЦП будет (1000/(1000+7500))*5 ~= 0.59В
При температуре 100 градусов на входе АЦП будет (1696/(1696+7500))*5 ~= 0.92В
При температуре 150 градусов на входе АЦП будет (2211/(2211+7500))*5 ~= 1.14В

Опорное напряжение ставим 1.2В, дальше обрабатываем аналогично LM35, только пересчитываем пороговые значения.
С уважением,
Андрей

Поражаю масштабностью некопмпетентность (ц) из лички

acyd

если учесть, что сопротивление этого термистора в 2 раза выше: при 20гр 1900,  а при 150 4300, то сопротивление второго резистора берем 14K для таких же результатов.
одно плохо, мне уже переменных скоро будет не хватать, итак по нескольку флагов записываю в одну переменную. Еще огорчает, что нельзя использовать математические выражения при вызове set и ramp, приходится вычислять в доп переменную, но в принципе не критично.

zap

Зато интерпретатор влез в 2 килобайта :)
Был бы x86 - писали бы на Лого, нивапрос  :-D
Поставлю зарубку, в след версии интерпретатора возможно получится увеличить количество переменных до 14 или 15.
С уважением,
Андрей

Поражаю масштабностью некопмпетентность (ц) из лички