Перейти к содержанию
    

murmur

Участник*
  • Постов

    665
  • Зарегистрирован

  • Посещение

Весь контент murmur


  1. Так я ж писала Почему 2? Почему 8? DSI в камне 3 пары. А дисплею, для режима 565 нужно 2 пары - 16 бит - 2 пары по 8 бит. Более того - DSI в STM Cube включается не где-нибудь, а в модуле LTCD. сейчас посмотрю. Хм... в дисплее то нужно по 1 паре на R,G,B и CLK. Но при этом контроллируются четные и нечетные пикелы. Вы правы, 8 пар надо.469 чип однозначно не рулит. И сериализатор нужно искать на 8 пар.... Вот такая табличка на сайте техасцев-инструментариев http://www.ti.com/interface/fpd-link-serde...s/overview.html Я правильно поняла, что максимальное разрешение, которое можно преобразовать из RGB в LVDS это 720p ? А для 1980p решений не существует? А вот еще интересный дисплейчик - там 3 пары всего, но называются они как-то странно - Lane0, Lane1 и AUX. Кто-нибудь знает, что это за формат такой?
  2. Так... я наверное недостаточно ясно выразилась. Во-первых, дисплей с LVDS, а не с DSI. Вопрос был в том, можно ли DSI порт процесора подключать к LVDS дисплею (я в STM CUBE MX создала проект, у меня появилось несколько дифференциальных пар, как в LVDS). Вот вам мост RGB to DSI - https://docviewer.yandex.ru/view/0/?*=KyVcF...e=1&lang=en он не в BGA. Спаять смогу. А посему повторю свой вопрос - каковы минусы? Не потеряю ли в производительности?
  3. 1. Что хочется: порулить дисплеем 10.1 дюйм, 1920х1200 точек. Вот таким https://ru.aliexpress.com/item/IPS-B101UAN0...iceBeautifyAB=0 Дисплей : B101UAN02.1 Даташит : https://docviewer.yandex.ru/view/0/?*=Kz%2B...%3D&lang=en 2. Какой камень имеется: STM32F429ZI На вот таком модуле https://www.hotmcu.com/system-on-chip-modul...7f0af6md85b9686 У меня есть два варианта 1. Искать RGB to LVDS конвертер. В связи с этим две проблемы-вопроса: - на алиэкспрессе полно конвертеров, с одного конца которых TTL, с другого LVDS, но непонятно что именно это за конвертеры - TTL to LVDS или LVDS to TTL. Как понять? Ни один продавец-китаец не смог ответить на этот вопрос. - не сказывается ли это отрицательно на производительности? 2. Если DSI можно напрямую подключать к LVDS, то может проще мне на указанном выше модуле заменить 429 чип на 469? Собственно вопрос - DSI и LVDS прямо совместимы? Маленькое пояснение - видео крутить не собираюсь, нужна не очень сложная, но очень четкая картинка, так что быстродействие не является ключевым. Какой вариант более рациональный и правильный?
  4. Коллеги, есть задача - объект несложной формы - цилиндрический с полушаровидным носом и различными выстоящими элементами. Сравнение с подводной лодкой было бы удачным. Необходимо рассчитать, с какой силой нужно тащить этот объект в воде, дабы он двигался определенной скоростью. Можно ли это сделать в Solidworks?
  5. Все пока хорошо, но вот почему то запускается двигатель с дерганьем. Непредсказуемым по времени. Поможешь рукой - крутится. Посмотрела на управляющие импульсы на фазах - они какие-то неодинаковые по ширине. Что-то мне подсказывает, что сигнал обратной ЭДС кривой. Посмотрите на эту ЭКГ - что с ней не так?
  6. Поигралась с настройками - увеличила таймаут, по которому обычный режим переключается в режим с контролем ЭДС. Программа не дожидалась и сбрасывала сччетчик в ноль. И доходило до этого, в том числе, из-за отсутсвия ШИМ и инерции мотора. Сейчас заработало. Дергается, но через некоторое время раскручивается. Попробую реализовать программный ШИМ. Мда... с ШИМом он почему-то вообще не стартует, только дергается. Будем искать... Это что-то вроде угла опережения зажигания? Где-то здесь задержку ставить надо? switch (commutation_step) { case (0): if(!SENSE_UVW || startup) { UH_ON; // На фазе U - ШИМ WH_OFF; // Фаза W отключена SENSE_W; // Активируем вход фазы W commutation_step = 1; // Следующий шаг TCNT0 = 0; // Обнуляем счетчик T0 } break; case (1): if(SENSE_UVW || startup) { VL_OFF; // На фазе V - лог. 0 WL_ON; // На Фазе W - лог. 1 SENSE_V; // Активируем вход фазы V commutation_step = 2; TCNT0 = 0; // Обнуляем счетчик T0 } break; case (2): if(!SENSE_UVW || startup) { UH_OFF; // Фаза U отключена VH_ON; // На фазе V - ШИМ SENSE_U; // Активируем вход фазы U commutation_step = 3; TCNT0 = 0; // Обнуляем счетчик T0 } break; case (3): if(SENSE_UVW || startup) { UL_ON; // На фазе U - лог. 1 WL_OFF; // На Фаза W - лог. 0 SENSE_W; // Активируем вход фазы W commutation_step = 4; TCNT0 = 0; // Обнуляем счетчик T0 } break; case (4): if(!SENSE_UVW || startup) { VH_OFF; // Фаза V отключена WH_ON; // На фазе W - ШИМ SENSE_V; // Активируем вход фазы V commutation_step = 5; TCNT0 = 0; // Обнуляем счетчик T0 } break; case (5): if(SENSE_UVW || startup) { UL_OFF; // На фазе U - лог. 0 VL_ON; // На Фазе V - лог. 1 SENSE_U; // Активируем вход фазы U commutation_step = 0; TCNT0 = 0; // Обнуляем счетчик T0 } break; }
  7. Этот этап пройден. Работает, пыхтит, греется, но крутит.
  8. Не стартует. К слову, ШИМ у меня сейчас пока нет, обмотки коммутируются максимальным током.
  9. Что-то не получается у меня с ЭДС. Господа, взгляните на схему цепочки детектирования в статье в первом сообщении, на ту же схему, но выложенную мной в PDF и скажите, будет ли отличаться алгоритм работы с компаратором? У меня ЭДС детектируется, прерывание срабатывает где надо (хотя впрочем, посмотрите на осциллограмму и оцените). Но двигатель пищит и не стартует. ОСЦИЛЛОГРАММА - красный график - вход компаратора, синий - строка PORTD.3=~PORTD.3 в самом начале обработчика прерывания от компаратора, чтобы понять, в какой момент времени он срабатывает. Код (мне его пришлось переделать) привожу #include <mega8.h> #include <delay.h> // Фаза U(Верхнее плечо) #define UH_ON PORTD.4=1; #define UH_OFF PORTD.4=0; // Фаза U(Нижнее плечо) #define UL_ON PORTD.5=1; #define UL_OFF PORTD.5=0; // Фаза V(Верхнее плечо) #define VH_ON PORTC.5=1; #define VH_OFF PORTC.5=0; // Фаза V(Нижнее плечо) #define VL_ON PORTC.4=1; #define VL_OFF PORTC.4=0; // Фаза W(Верхнее плечо) #define WH_ON PORTC.3=1; #define WH_OFF PORTC.3=0; // Фаза W(Нижнее плечо) #define WL_ON PORTB.0=1; #define WL_OFF PORTB.0=0; #define PHASE_ALL_OFF UH_OFF;UL_OFF;VH_OFF;VL_OFF;WH_OFF;WL_OFF; #define SENSE_U ADMUX = 6; // Вход обратной ЭДС фазы U #define SENSE_V ADMUX = 7; // Вход обратной ЭДС фазы V #define SENSE_W ADMUX = 0; // Вход обратной ЭДС фазы W #define SENSE_UVW (ACSR&(1 << ACO)) // Выход компаратора #define START_PWM 10 // Минимальный ШИМ при запуске #define WORK_PWM 100 // Рабочий уровень ШИМ unsigned char start_stop = 0; unsigned char current_phase = 0; volatile unsigned char motor_pwm = WORK_PWM; volatile unsigned char commutation_step = 0; volatile unsigned char rotor_run = 0; // Счетчик импульсов обратной ЭДС // Крутим по часовой стрелке void commutation(unsigned char startup) { switch (commutation_step) { case (0): if(!SENSE_UVW || startup) { UH_ON; // На фазе U - ШИМ WH_OFF; // Фаза W отключена SENSE_W; // Активируем вход фазы W commutation_step = 1; // Следующий шаг TCNT0 = 0; // Обнуляем счетчик T0 } break; case (1): if(SENSE_UVW || startup) { VL_OFF; // На фазе V - лог. 0 WL_ON; // На Фазе W - лог. 1 SENSE_V; // Активируем вход фазы V commutation_step = 2; TCNT0 = 0; // Обнуляем счетчик T0 } break; case (2): if(!SENSE_UVW || startup) { UH_OFF; // Фаза U отключена VH_ON; // На фазе V - ШИМ SENSE_U; // Активируем вход фазы U commutation_step = 3; TCNT0 = 0; // Обнуляем счетчик T0 } break; case (3): if(SENSE_UVW || startup) { UL_ON; // На фазе U - лог. 1 WL_OFF; // На Фаза W - лог. 0 SENSE_W; // Активируем вход фазы W commutation_step = 4; TCNT0 = 0; // Обнуляем счетчик T0 } break; case (4): if(!SENSE_UVW || startup) { VH_OFF; // Фаза V отключена WH_ON; // На фазе W - ШИМ SENSE_V; // Активируем вход фазы V commutation_step = 5; TCNT0 = 0; // Обнуляем счетчик T0 } break; case (5): if(SENSE_UVW || startup) { UL_OFF; // На фазе U - лог. 0 VL_ON; // На Фазе V - лог. 1 SENSE_U; // Активируем вход фазы U commutation_step = 0; TCNT0 = 0; // Обнуляем счетчик T0 } break; } } // Обработчик прерывания по компаратору. Детектор обратной ЭДС // Analog Comparator interrupt service routine interrupt [ANA_COMP] void ana_comp_isr(void) { PORTD.3=~PORTD.3; rotor_run++; // инкрементируем импульсы if(rotor_run > 200) rotor_run = 200; if(rotor_run == 200) // Если импульсы обратной ЭДС присутствуют, крутим наполную { commutation(0); } } // Обработчик прерывания по переполнению Т0. Работа двигателя без сигналов обратной ЭДС interrupt [TIM0_OVF] void timer0_ovf_isr(void) { commutation(1); // Если сработало прерывание, есть пропуски импульсов обратной ЭДС rotor_run = 0; // Сбрасываем счетчик импульсов } // Timer2 overflow interrupt service routine interrupt [TIM2_OVF] void timer2_ovf_isr(void) { /* // // ЭТО ПОПЫТКА СДЕЛАТЬ ПРОГРАМНМНЫЙ ШИМ, РАЗБЕРУСЬ ПОТОМ if (commutation_step==0) UH_ON; if (commutation_step==2) VH_ON; if (commutation_step==4) WH_ON; */ } // Timer2 output compare interrupt service routine interrupt [TIM2_COMP] void timer2_comp_isr(void) { // ЭТО ПОПЫТКА СДЕЛАТЬ ПРОГРАМНМНЫЙ ШИМ, РАЗБЕРУСЬ ПОТОМ /* if (commutation_step==0) UH_OFF; if (commutation_step==2) VH_OFF; if (commutation_step==4) WH_OFF; */ } void main(void) { // Порты ввода/вывода DDRD.4=1; // UH DDRD.5=1; // UL DDRC.5=1; // VH DDRC.4=1; // VL DDRC.3=1; // WH DDRB.0=1; // WL DDRD.3=1; PORTD.3=0; /* while(1) { PORTD.4=1; // UH PORTD.5=0; // UL PORTC.5=1; // VH PORTC.4=0; // VL PORTC.3=1; // WH PORTB.0=0; // WL delay_ms(10); PORTD.4=0; // UH PORTD.5=0; // UL PORTC.5=0; // VH PORTC.4=0; // VL PORTC.3=0; // WH PORTB.0=0; // WL delay_ms(10); } */ // Timer/Counter 2 initialization // Clock source: System Clock // Clock value: 15,625 kHz // Mode: Normal top=0xFF // OC2 output: Disconnected ASSR=0x00; TCCR2=0x02; OCR2=20; // T0 - для старта и работы двигателя без сигналов обратной ЭДС TCCR0=0x05; TIMSK |= (1 << TOIE0)| (1 << TOIE2)|(1 << OCIE2); // Разрешаем прерывание по переполнению T0 PHASE_ALL_OFF; // Выключаем все фазы // Аналаговый компаратор ADCSRA &= ~(1 << ADEN); // Выключаем АЦП SFIOR |= (1 << ACME); // Отрицательный вход компаратора подключаем к выходу мультиплексора АЦП ACSR |= (1 << ACIE); // Разрешаем прерывания от компаратора #asm("sei") // Глобально разрешаем прерывания start_stop=1; if(start_stop) { ACSR |= (1 << ACIE); // Разрешаем прерывание от компаратора TIMSK |= (1 << TOIE0)| (1 << TOIE2)|(1 << OCIE2); // Разрешаем прерывание по переполнению T0 if(rotor_run == 200) // Если импульсы обратной ЭДС присутствуют, можем менять ШИМ { // OCR2=0x0F; } } else { PHASE_ALL_OFF; // Все фазы выключены ACSR &= ~(1 << ACIE); // Запрещаем прерывание от компаратора TIMSK &= ~(1 << TOIE0); // Запрещаем прерывание по переполнению T0 } }
  10. Может вы не будете спорить, а ответите мне про deadtime? Вопрос был на предыдущей странице в конце
  11. Я предельно ясно выразилась - "держат равновесие". Гироскоп определяет наклон. А Холлы - держат
  12. Смущает в коде, что по ссылке в первом сообщении, отсутствие deadtime. Или я слепая и не вижу? Гироскутеры на них не просто бегают, они на них равновесие держат. Именно этим определяется необходимость в датчиках Холла.
  13. Мотор изначально предназначен для авиамодели. Но мной он будет установлен в детский автомобильчик (через редуктор), взамен старого и дохлого.
  14. Хм... странно все таки. Почему разработчик моего контроллера не использовал аппаратные возможности шим.... Скажите я ведь могу, используюя для управления верхними ключами навязанные мне пины, завести таймер и с его помощью тупо менять состояния пинов обычным "ногодрыгом" и возвращать их обратно? Это будет адекватная замена аппаратным возможностям?
  15. Статья статьей, но я привела свою схему, на которой именно компаратор, а мотор к ней можно подключать до 20 ампер. И схема работает. Конденсаторы фильтров на плате есть, я их просто на схеме не привела. За статью спасибо, очень интересно. V_N, вам тоже спасибо. СЛона то я и не заметила))) Следующий вопрос - ШИМ. В статье, которую я привела, все просто и логично - управление верхними ключами осуществляется через ШИМ выходы контроллера. При проектировании же моей платы китайцы наверное следовали Конфуцию или еще кому-то... Но у меня OC1A, OC1B и OC2 вообще не заняты. Управление верхними ключами повешено на PC3 PC5 PD4. Есть статейка от АТМЕL, где есть интересное решение - один ШИМ выход и логические элементы. Но у меня такое решение не применено. Неужели у меня был программный ШИМ? Как на практике еще организовывают ШИМ управление? Может есть какой-то способ шимировать все ключи или ток регулировать? У меня на плате есть еще несколько элементов, предназначение которых я понять не могу пока, в виду того, что плата 4-х слойная. Кстати - на плате почему то целых 3 преобразователя напряжения 7805, которые соединены параллельно, только выход их развязаны маломощными резисторами 22 ом. И это при том, что из 5-ти вольтовых потребителей только Атмега... Никого ни на какие мысли не наводит?
  16. Коллеги, есть трупик модельного регулятора скорости бесколлекторного двигателя. Китайский. Плата 4-х слойная, прозвонила ее с трудом. На плате ATmega8. Во первых Атмега горелая, буду ее менять. Во вторых, хочу залить свою прошивку по ряду причин - отрегулировать напряжение отключения при разряде, добавить изменение направления вращения по команде на пин и др. В общем, частичный реверсинг. В принципе схема очень похожа на вот это http://radioparty.ru/prog-avr/program-c/61...bldc-sensorless С одним лишь отличием - посмотрите как реализована схема детекции обратной ЭДС там, и посмотрите в выложенный мной PDF - это в моем контроллере, для которого хочу писать прошивку. В статье, которую я привела выше, замечательно расписано, как с помощью компаратора детектируется обратная ЭДС. Но совершенно непонятно, какую функцию выполняют входы ADC0 ADC1 ADC2. Ни в статье это не описано, ни в приведенном коде на С обращения к этим пинам нет. Посмотрите на мою схему, в прилагающемся PDF. Там немного по другому. Но тоже идут 3 линии к ADC0 ADC6 ADC7. Для чего же они нужны, какую роль они играют в управлении двигателем? Ну и, учитывая то, что в моей схеме цепи детекции несколько иные, будет ли отличаться алгоритм обработки поступющих с них сигналов на компаратор и на ADC ? Sheet1.pdf
  17. Нет, нахолостую. Ну да ладно, новый аккумулятор уже куплен. Приглашаю в новую соседнюю тему (сейчас открою)
  18. Обычный зарядник из радиоширпотребмага. Написано 6 вольт, 0.6А, но реально выдает 7.45 вольт Я бы подождала, пока аккумулятор зарядится до 7 вольт, но я контролировала ток заряда. Он быстро падает до 40мА. Да и, кстати - однажды всю ночь заряжался, но бестолку, заряда хватило на несколько минут. При исследовании проводки электромобиля, к которому был подключен данный аккумулятор, не было обнаружено никакой схемы защиты от разряда. Ребенок, естественно, катался до полного опустошения бака. Так вот через десяток зарядок аккумулятор и сдох.
  19. Навскидку около 50-ти. При делителе 13.3/130 кОм. При этом напряжение на выходе 9 вольт. Уменьшаешь верхний резистор менее 80 кОм, пульсация на SW какая-то безобразная и бесформенная получается.
  20. Эта схема способна выдать 60 вольт? У меня не получается почему-то сделать это изменением параметров резисторов делителя. Это мультисим неидеален или еще что?
  21. Попытка просимулировать приведенную последнюю схем в Multisim приводит к ошибке. Что я делаю не так? Мультисим 14 выполнил поиск ошибки и вроде все заработало. Но уж очень медленно как-то идет моделирование - микросекунды тянутся очень долго. Как настроить чтобы было в реальном времении TKMP.rar
  22. Есть ОУ с двуполярным питанием 50 вольт. У кого-нибудь был опыт создания источника питания для таких? Существуют ли готовые микросхемные решения? Или же нужно будет ставить два и объединять их, примерно как здесь http://rcl-radio.ru/?p=35570 Входное напряжение даже не знаю пока, пусть будет 5 вольт. Выходной ток - навскидку не более 50 мА. Вот кстати виновник торжества (который кормить нужно) ADA4700_1.pdf
  23. Свинцово-кислотный аккумулятор 6 вольт 4.5 ампер-часов . Вот такой https://www.dns-shop.ru/product/850524e3fef...m-6045-6v-45ah/ Подключаю зарядное устройство сначала зарядный ток чуть более 200 мА , затем в течение 5-ти минут падает до 45 мА. Заряжается до 6 с копейками вольт. Разряжаем: подключаю нагрузку 10 Ом, напряжение просаживается до 4 вольт, но планируемый ток в 0.6 А выдает. Через 5 минут напряжение на аккумуляторе даже без нагрузки 4 с копейками вольт. Аккумулятор на выброс? P.S. - Зарядник способен выдать 0.6 А, но зарядка идет с током 0.2 А. Так и должно быть? Я так понимаю, даже если внутри зарядного нет ограничения тока и накороткую он способен дать 0.6 А, то аккумуятор за счет своего внутреннего сопротивления как-то этот ток ограничит? В общем если зарядное выдает 0.6 А без регулировки, и если подключить к нему аккумулятор 6 вольт 4.5 ампер-часов, какой зарядный ток будет нормльным при здоровом аккумляторе?
  24. Странно... у меня мышка беспроводная цифру гонит. Если я ее мощность подниму до 100 мВт, я умру в застенках гестапо?
×
×
  • Создать...