Jump to content
Sign in to follow this  
razor1703

Ацп-Цап В Микроконтроллерах Pic16Cxx. Выбор Мк Для Курсовой (Mplab)

Recommended Posts

Здравствуйте, господа. Без лишней лирики перейду сразу к делу.

Имеется задание на курсовой проект, где нужно принять два налоговых сигнала с амплитудой 0-5 В, пропустить их через АЦП, выполнить определенные операции и, пропустив через ЦАП, послать на выход получившиеся аналоговые сигналы.

Имеется также ряд вопросов:

1. Скольки разрядный АЦП стоит использовать (а соответственно и МК)? Какая точность в данной ситуации не покажется абсурдно низкой?

2. Можете привести пример использования ЦАП в одном из МК вышеуказанной серии? В гугле достаточно много информации по АЦП, а вот по ЦАПу я так и не смог найти ничего. Нужно принимать во внимание то, что среди операций

есть взятие корня, возведение в степень и деление, то есть, если отбрасывание дробной части результата не вариант, то нужно преобразование выполнять с числом немалой разрядности (кстати, как организована работа в МК с "дробными" числами).

3. Как организовать параллельный ввод двух сигналов и, соответственно, вывод?

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

Спасибо.

Edited by razor1703

Share this post


Link to post
Share on other sites

1 смотря какая точность и разрядность нужна.

2 ЦАП в 16 ПИКах по моему отсутствует. Использовать нужно ШИМ и потом фильтровать.

3 Использовать два входа АЦП и по очереди опрашивать. По сути, АЦП один , но имеет мультиплексор.

Если знания слабоваты - советую почитать литературу по микроконтроллерам.

Share this post


Link to post
Share on other sites

Технология Maxim Integrated nanoPower: когда малый IQ имеет преимущества

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

Подробнее

Зачем городить мешок резисторов , если лучше использовать ШИМ ?

Share this post


Link to post
Share on other sites
                     

Платы Nucleo на базе STM32G0: чего можно добиться с помощью связки Nucleo и Arduino

Платы Nucleo и платы расширения X-NUCLEO от STMicroelectronics можно интегрировать в платформу Arduino с помощью библиотеки STM32duino. Связка плат Nucleo и платформы Arduino, и наличие готовых библиотек – представляет удобный инструмент для создания прототипов и конечных приложений в условиях ограниченного времени. Статья содержит пошаговые инструкции по установке библиотек и запуску примеров для Nucleo.

Подробнее...

Все в пиках есть и ЦАП и АЦП и в 16 серии, смотрите типа 15хх, где есть 4 последние цифры после F. А принципе простой ЦАП можно на любом ШИМ организовать.

Share this post


Link to post
Share on other sites

Судя по тому что топикстартер в теме не появляется неделю - ему уже наши советы не нужны .

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
Sign in to follow this  

  • Similar Content

    • By tishkanexx
      Продаю корпус для ЦАП (DAC) AK4490 / усилителя для наушников. Саму плату, если её нет, то можно купить на али ($36), фото платы прикладываю, могу дать ссылку на покупку.
      Корпус заказывал с завода breeze audio, минимально можно было заказать 2 корпуса ($30 два корпуса с доставкой), поэтому один продаю. Отдаю за $15, без наценки как есть. Если брать плату ЦАП-а и корпус, то получается $51, что дешевле, чем брать готовый ЦАП на том же ali за $60. Об этом писал здесь:
      На корпусе надпись: AKMDAC - HEADPHONE AMP (сделана по заказу вместо надписи breeze audio)
      Комплект: 4 силиконовые ножки, саморез для крепления "тюльпанов", 8 винтов для корпуса, сами части корпуса.
      Стоимость: 1000р или 15$. Пишите в лс.



    • By duty
      Привет, участникам форума! Подскажите, пожалуйста, как можно реализовать связь микроконтроллера pic с адресным ключом (ds2405 или ds2408) по 1-wire (на шине будут висеть несколько ключей)  для считывания pio ключа, во входном режиме, т.е на pio поступает сигнал  с магнитоконтактного датчика о срабатывание его или нет.    Datasheet читал, но мало чего понял.  Тестирование произвожу в proteus 8.6
    • By Максим123456789
      делаю диплом, в схеме у меня микроконтроллер PIC16F688 и мне нужно его заменить на ATmega. Не могу найти похожий
    • By n_angelo
      Привет, знатоки. Написал свою первую программу для контроллера STM8L152C6T6 (STM8L-Discovery). Это, собственно, моя первая программа для контроллеров вообще. Я многого не знаю и не понимаю. Возможно ваш ответ на мой вопрос будет банален.
      Используемая периферия: DAC, DMA, TIM4, CLK, GPIO
      Задача у программы такая:
      В EEPROM зашит один период синусоиды с дискретизацией 44100Гц. Период занимает ровно 101 байт, что по сути должно быть равно 2,29мс (1/44100*101). В коде программы только конфигурация периферии, одно прерывание на кнопке и пустой бесконечный цикл, который ничего не делает. Всю работу выполняет таймер, который настроен выдавать запрос к DMA на каждые 1/44100 (ядро тактируется 2мГц, таймер считает до 45). В свою очередь DMA забирает из EEPROM по одному байту на каждый запрос от таймера и передаёт его в DAC. Далее DAC выводит бесконечную синусоиду на ногу PF0. Прерывание на кнопке запускает весь этот механизм и зажигает светодиод.
      Проблема:
      Измеряя ногу PF0 осциллографом было замечено, что период синусоиды занимает около ≈4мс. Фото под катом.
      Меня это расстроило. Экспериментально выяснилось, что стоит только вписать в бесконечный цикл какую-нибудь проверку, например, [если значение текущего байта синусоиды = 0xFF, то зажечь светодиод, если 0x00, то потушить], то осциллограф показывает правильный тайминг в 2(с копейками)мс. В принципе в теле цикла может быть что угодно, кроме пустоты, и тайминг налаживается.
      Я не могу отдебажить дизассемблер, т.к. его не знаю. Это у меня в планах. Но я очень хочу понять, что происходит и почему пустой цикл рушит тайминг.
      Спасибо.
       
       
       
       
    • By artos5
      Приветствую всех на этом форуме!
      Есть необходимость измерять сигнал при помощи данного АЦП. С помощью этого АЦП можно измерять 4 аналоговых не дифференциальных сигнала . Схема следующая:
      Schematic_Temp_opto_sens_V2_20190817124112.pdf
      Картинками с более низким разрешением:
      библиотеку за основу взял эту:
      https://github.com/nsaspook/nidaq700/blob/master/supermoon/example/ADS1220.c
      Путем незначительного допиливания, получилась такая библиотека:
       
      Поправил только эти функции:
      void ADS1220SendByte(unsigned char Byte) { unsigned char Result = 0x01, i=0, flg=0; MOSI_LO; Delay_us(1); for(i=0;i<8;i++) { SCK_LO; //ADC_CLK=0 Delay_us(4); if (flg) MOSI_LO; Delay_us(1); SCK_HI; //ADC_CLK=1 Delay_us(1); if (Byte&Result){ MOSI_HI; flg=1; } else MOSI_LO; Delay_us(4); Result<<=1; } SCK_LO; //ADC_CLK=0 } unsigned char ADS1220ReceiveByte(void) { unsigned char Result = 0, i=0; for(i=0;i<8;i++) { Result<<=1; SCK_LO; //ADC_CLK=0 Delay_us(5); //Delay_us(5); SCK_HI; //ADC_CLK=1 Delay_us(3); if (MISO) Result++; Delay_us(2); } SCK_LO; //ADC_CLK=0 return Result; } И добавил эту функцию:
      void ADS1220Config_MUX_GAIN(uint8_t mux, uint8_t gain) { unsigned Temp; ADS1220ReadRegister(ADS1220_0_REGISTER, 0x01, &Temp); // clear prev value; Temp &= 0x0f; Temp |= gain; Temp |= mux; // write the register value containing the new value back to the ADS ADS1220WriteRegister(ADS1220_0_REGISTER, 0x01, &Temp); ADS1220ReadRegister(ADS1220_1_REGISTER, 0x01, &Temp); // clear prev DataRate code; Temp &= 0x1f; Temp |= (ADS1220_DR_600 + ADS1220_CC); // Set default start mode to 600sps and continuous conversions // write the register value containing the new value back to the ADS ADS1220WriteRegister(ADS1220_1_REGISTER, 0x01, &Temp); } ADS1220.h :
      в результате получаю такую осциллограмму :

      То есть , постоянно считывается 0.
      А вот регистры конфигурации:
      Задаю номер входа MUX и усиление :
       

       
      Читаю данные так:
      ADS1220Config_MUX_GAIN(ADS1220_MUX_0_G, ADS1220_GAIN_1); HAL_Delay(10); temp_[0] = ADS1220ReadData(); Это для 0 канала. 
      Пробовал и так:
      ADS1220SetChannel(ADS1220_MUX_0_G); ADS1220SetGain(ADS1220_GAIN_1); temp_[0] = ADS1220ReadData(); Результат аналогичный. Кто что подскажет? Может кто заметит какой косяк в коде? Уже голова дымит ..
  • Сообщения

    • И последнее. Как правильно было сказано, 6гд6-80 в рлане "улучшения отдачи баса" хуже 25гдн т.к а) Fs80 против 50 б) мотор слабее и соответственно Qts выше, что потребует Vb больше чем для 25гдн. А он работает в 8литрах, для пары нужно фи всего 16литров. Супротив четырёх не даст. Проще сделать Sp=0.7-1.0Sd чем измерять "ветер"...
    • Если не гоняться за 4-ым знаком после запятой, то для любительских измерений этой карточки за глаза (собственные гармошки у неё менее 0,001% при 24-разрядах и 96кГц). В конце концов всё будет зависеть от характеристик PC-дюка, в который ты её установишь, ну и ест-но от кривизны измерительных "кайобочек", подключаемых к ней.  
    • да на самом деле ничего другого под руками не было. P.s. потенциометр громкости все таки надо будет поменять. Хрипит, шуршит, цикает и некорректно распределяет звук по каналам. В одном положение - звук тише в левом канале, в правом громче, в другом положение наоборот, а в третьем положении вроде выравнивается. Я Так понял проще заменить чем старый ремонтировать. Гемору немеряно. Клепки эти высверливать замучаешься чтоб ничего не повредить, плюс потом все это проволокой скреплять... ну нафиг.
    • 1. При замене номиналов таким образом, да, Fcpез не меняется. НО! Катушка получилась конская т.к при увеличении L для сохранения её активного сопротивления Rc (не более 0.1Re нагрузки= в данном случае 0.4ома) растёт масса-габарит. Можно намотать на сердечнике, но его надо расчитать... Ладно, хай будэ так. 2. Ну увеличили объём. А ПТС динов снимали? Откуда знаете Vas каждого мидбаса и что они вообще идентичны тому проекту?  3. Ошибаетесь. Минимально допустимый диаметр порта Dp =0.5Dэкв. А теория гласит Dp=Dэкв или Sp=Sd. Просто в целях экономии и укорочения длинны порта его уменьшают. Снижение Sp приводит к снижению кпд, увеличению кни, скорости потока и турбулентных завихрений. Для двух 4" либо один 70мм, либо 2×50мм. Второй вариант предпочтительнее. Межосевое портов (как и их геометрия) тоже влияет на их длинну и добротность при неизменной Fb. 4. Поясню вашу ситуацию. Мидбасы работают до 500гц, соответственно межосевое самих мидбасов, как и между мидом не должно превышать 34.4см. Но с акустической точки зрения мидбасы лучше ставить ближе друг к другу, тогда их присоединённые массы взаимодействуют, общее Ra увелививается и два мидбасовичка виртуально превращаются в один с диаметром в 1.414 раз больше. По той же причине трубы порта лучше размещать ближе к мидбасовикам. Оптимум такого решения это КФИ-кольцевой фазоинвертор. Но это другая тема разговора. 5. Естессно знаю. Даже не один раз выкладывал таблицу распределения мощности от вастоты среза. Но, увы, посетители тем не читают... а зря. Заглублять дины в "колодец" вообще нельзя. Их надо ставить за под лицо с баффлом, почитайте теорию волн. А мидбас и басовик можно (ваще нужно) выставлять на подложку, толщина которой расчитывается согласно выравниванию акустических центров (АЦ) с мидом относительно порядка применяемых ФНЧ и ПФ. 12см вч/сч это межосевое для среза 1430гц, что на две с лишним октавы ниже реальной Fсрез 8-9кгц. Это приводит к интерференции и звука не улучшает. В вашем случае 3гд36 надо ставить впритык к миду, раз. Настроить установку по глубине относительно мида согласно АЦ и фазовому сдвигу фильтров, два. И полюбому ставить цепь фазокоррекции т.к при всём желании сделать межосевое сч-вч 2см применяемые дины не позволяют физически. Либо резать ниже и переделывать фильтр, либо поменять мид с твитером на хороший ширик, тянущий до 14-15кгц. 6. Как измеряли сч-нч 15см, от верхнего или от центра между мидбасами? Надо от центра т.к любая пара головок работает вместе= синфазно=как одно целое= как один излучатель и их АЦ и ось ДН находится ровнёхонько между ними.  Судя по фото межосевое нч-нч больше 20см т.к диаметр корзины 6гд6 125мм, Dэкв10см и если их поставить впритык друг к другу межосевое d =12.6см а на фото я вижу что между ними влезет третий мидбас, значит измерили между корзинами а не ценрами диффузоров. В итоге межосевое нч-сч = 16.25+15= 31.25см. Правда вам повезло, т.к это расстояние на 3.15см меньше положенного и вписывается в допуск. В следующий раз учитывайте где находится АЦ пары головок..
    • Книжку бы с описанием схем мультиметров,  принципом работы, деталировкой, методикой проверки и подстройки.  
    • Это "сферический конь в вакууме". Что есть "тоненькие провода"? Каково их сечение? Длина? Сопротивление? Можно резистором ограничить ток мотора, но это бред  Тем паче что под нагрузуой плата всё равно уйдёт в защиту. Если вы хотите использовать устройство с защитой и от "сети" (не понятно чего вы в итоге хотите от "шуруповёрта" (электроотвёртки?) и как хотите этот девайс использовать), меняйте модуль на более подходящий. Либо питайте мотор напрямую от АКБ, а данный модуль используйте только для зарядки самой АКБ. Всё остальное, лютая дичь. Ну не подходит этот модуль под эти цели, для этого есть другие модули с бОльшей нагрузочной способностью. Если защита срабатывает, то это не просто так, это защита от КЗ, от превышения нагрузки и "от дураков". 
×
×
  • Create New...