Jump to content
    

Halfback

Участник
  • Posts

    424
  • Joined

  • Last visited

Posts posted by Halfback


  1. В 15.01.2024 в 12:02, stells сказал:

    Это нормально. Я неделю тупил, пока не понял, что у меня не тот тип SPI задан (чтение/запись по фронту/срезу SCLK)

    Вот так спасибо. Привел CPHA (2 EDGE) и CPOL (High) в соответствие и всё заработало как надо. Ура!

  2. В 13.01.2024 в 11:10, Plain сказал:

    В этом разделе показывают осциллограммы и т.п.

    Хорошо. ВОт осциллограммы SPI

    Соответствуют коду 

    rrr=AD779X_HWDetect();   
    rrr=AD779X_HWDetect();

    Другими словами первая строчка работает, ответ есть. Вторая не работает, ответ всегда 0.

    Вот это осциллорамма SCK и SDO

    photo_2024-01-15_11-31-38(2).thumb.jpg.30c8290d58fb557801fc1439902f048b.jpg

    Вот это осциллорамма SCK и CS

    photo_2024-01-15_11-31-38.thumb.jpg.3f24ebd2f2e9974212128494443fd919.jpg

    Вот это более подробная осциллорамма SCK и SDO когда данные с АЦП выплевываются.

    photo_2024-01-15_11-31-38(3).thumb.jpg.a0694992f3c55cb628592df02f814348.jpg

     

    ВОт осциллограммы SPI

    Соответствуют коду 

    rrr=AD779X_HWDetect();  
    AD779X_Reset(); 
    rrr=AD779X_HWDetect();

    Первая и третья строчка работает если между ними ставить сброс.

    Осциллорамма SCK и SDO

    photo_2024-01-15_11-42-55.thumb.jpg.6adc43311be3b2a17dd07e4b128e8991.jpg

    Осциллорамма SCK и CS

    photo_2024-01-15_11-42-46.thumb.jpg.de9e7866e406a3a4a35da3649b51dee6.jpg

  3. В 13.01.2024 в 05:39, Plain сказал:

    Вопрос не про ИС, а фактически про то, чего тот индиец насочинял в той библиотеке, и как минимум для другого раздела форума.

    Изначально либу на гитхабе писал не индус, я её во многом переработал. Если топик надо перенести в другое место - я не против. Просто в этом же разделе было обсуждение АЦП 7792 но на дркгкю тему, вот и решил разместить тут же. 

  4. Всем доброго времени суток!

    Ситуация такая: подаю питание на АЦП, выдаю софтовый сброс с чипселектом 32 единицы, читаю ID - всё нормально, возвращает 0x4A (с маской 0xF интересно что это именно А) а далее всё, кранты. Допустим читаю это же регистр или другие регистры - возвращает в основном нули. Если перед каждым чтением регистра выдавать софтовый сброс то всё хорошо, все регистры по умолчанию читаются в соответствии с даташитом.

    Вопрос - что я не так делаю?

    Т.е. вот так работает, rrr = 0x4A:

    volatile unsigned short rrr;
    
    AD779X_Reset();
    HAL_Delay(1);
    rrr=AD779X_HWDetect();        
    AD779X_Reset();
    HAL_Delay(1);
    rrr=AD779X_HWDetect(); 

    вот так не работает

    volatile unsigned short rrr;
    
    rrr=AD779X_HWDetect();   
    HAL_Delay(1);
    rrr=AD779X_HWDetect(); 

     

    unsigned char AD779X_HWDetect()
    {
    	unsigned char result;
    	
    	ADCDevice.CSControl(cssEnable);	
    	ADCDevice.TxByte(AD779X_RDR_ID); /* send cmd: read ID register */	
    	m_adc_model = ADCDevice.RxByte(); /* get ID */	
    	ADCDevice.CSControl(cssDisable);
    	
    	return (m_adc_model);
    }

    ВТорой день туплю, не понимаю почему так происходит. Что АЦП не нравиться? Почему сброса требует? На осциллографе вроде всё нормально. Когда не работает, SDO АЦП действительно не отвечает.

  5. В 25.12.2023 в 15:28, EdgeAligned сказал:

    Но если "некоторые авторы" предпочитают идти по лесному болоту вместо езды по хайвею

    Вы даже не удосужились понять суть моего вопроса и начали давать "ценные" советы как по SPI работать с АЦП. А если бы это был не АЦП а другое устройство? И не SPI ?  Суть вопроса данного топика от этого не поменялась бы никак. Надеюсь понятно пояснил.

  6. В общем всем спасибо за потраченное время. А ларчик то открывался просто. 

    Ведь было же в "ADC.h" объявлено 

    extern tADС_Device ADCDevice;

    это значит что в main.c можно написать так

    tAD779X_Device ADCDevice = {
            .TxByte = SPI_TxByte,
            .RxByte = SPI_RxByte
            };

    и причем тут потуги на тему как надо работать с АЦП, что необходимость DMA (хотя кто сказал что это какой-нибудь STM32 а не AVR/PIC) и т.д. и т.п.???  совершенно непонятно зачем некоторые товарищи пытались уводить тело вопроса в сторону.

  7. В 25.12.2023 в 13:39, jcxz сказал:

    ЗЫ: И зачем интересно что-то записывать в АЦП?

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

    В 25.12.2023 в 13:39, jcxz сказал:

    Что такое "привязать"? непонятно...

    при обращении ADCDevice.TxByte(0xA0) реально должна вызываться SPI_TxByte(0xA0)

    в "ADC.h" объявлен тип tADC_TxByte как указатель на функцию, принимающая в качестве аргумента unsigned char и ничего не возвращающая.  Но вот меня клинит на том, где правильно написать что tADC_TxByte SPI_RxByte;

  8. всем доброго времени суток.

    с проектом непонятки следующие:

    1. Есть АЦП. В него отправляют байты по SPI и также получают. В соответствующем для АЦП h-файле есть записи

    typedef void (* tADC_TxByte)(unsigned char Data);
    typedef unsigned char (* tADC_RxByte)(void);
    
    typedef struct
    {
        tADC_TxByte TxByte;
        tADC_RxByte RxByte;
    } tADC_Device;
    
    extern tADС_Device ADCDevice;

     

    2. Есть для микроконтроллера файлы SPI.c и SPI.h где определены соответствующие функции для работы с SPI

    void SPI_TxByte(unsigned char Data);

    unsigned char SPI_RxByte(void);

     

    Так вопрос вот в чем - как правильно привязать обращения типа 

    data[0] = ADCDevice.RxByte() к SPI_RxByte(void);

    и соответственно 

    ADCDevice.TxByte(0xA0) к SPI_TxByte(0xA0);

    ???

    Есть ли способ увязать не корректируя файлы "ADC.c" и "ADC.h"? Например создать файлик "ext_SPI.h" и правильно его инклудить. 

    Прошу ногами сильно не пинать. Наверное это предновогодний ступор.

  9. В 24.10.2023 в 22:58, iliusmaster сказал:

    Мы так до сих пор и не определились с электродом сравнения. Относительно чего вы собираетесь измерять потенциал? 

    потенциал мерить нужно относительно электрода сравнения. Рассматривается AgCl

    Например в стеклянной или пластиковой емкости с соленой/пресной водой, где рядом погружен электрод сравнения, надо штырем из нержавейки ткнуться в цинковую пластину, расположенную на дне. И померить разность потенциалов с точностью до 1мВ.

    На первом рисунке, электрод подключается к неинвертирующему входу ОУ. На сколько я понял там нужно применить что-то вроде коаксиала и оплетку коаксиала подключить ко выводу 2 ОУ, центральную жилу к 3 ноге ОУ. Предполагается, для того чтобы эта система работала, в жидкости с электродом оплетка д.б. оголена? Или как это работает?

    На второй картинке (FIGURE 3) мне не известный электрод сравнения, у которого судя по рисунку 2 вывода. Я ориентируюсь на электрод сравнения ЭСр-10111, у которого 1 вывод.

     

     

  10. В 24.10.2023 в 16:16, MrYuran сказал:

    Обычно в таких схемах датчик температуры присутствует для термокомпенсации. А у него обычно корпус металлический.

    Улавливаете?

    мысль понятная, только вот я PH не мерю, у которой есть зависимость от температуры жижи. Мне нужна только разность потенциалов между электродами. 

    Кстати, если только к одному электроду подключить Vref через 10 МОм то по идее в соленой и пресной воде потенциалы относительно Vref должны выровняться. И тогда потенциал с электродов спокойно можно подавать на гигаомные/тераомные входы буфера на ОУ, питание которого привязано к общему Vref. Расстояние между электродами всегда постоянно.

    Что скажете?

  11. В 24.10.2023 в 14:25, firstvald сказал:

    второй вариант может сильно снизить наводки. резисторы по входам я бы не ставил. потом балансировка все равно нужна (или мы учитываем ее уже в цифре). попробуйте просто макетик с AD620 (623) какой дешевле найдете с усилением скажем 10. Электрод от Uref должен снизить наводку,  но вот исказить напряжение сможет запросто.

    если выбирать между наводками и искажением напряжения (разности потенциалов между электродами) то выбираю бороться с наводками, например между инструментальником и АПЦ поставить ФНЧ с постоянной времени сотни миллисекунд. 

    балансировка "нуля" вольтметра планируется при старте девайса, переключением цепей электродов в цепь КЗ.

    Да и 3-й электрод очень не хотелось бы внедрять хотя бы с конструктивной точки зрения.

  12. В 24.10.2023 в 08:59, MrYuran сказал:

    Измерение ЭДС производится относительно опорного электрода с опорным потенциалом, уже написали.

    технически не понятно. На электрод сравнения предлагается подавать Vref ? Или Vref опускать в воду считай третьим электродом, рядом с двумя другими электродами?

    photo_2023-10-24_13-22-28.jpg

  13. В 24.10.2023 в 10:41, Plain сказал:

    Это да, автор не озвучил порядок требуемых величин, и если нужны микровольты, то два повторителя, перед каждым измерением калиброванных в составе СИ, по причине КОСС их и АЦП.

    точности в 1мВ будет достаточно. Микровольты не нужны.

  14. В 23.10.2023 в 19:04, Alex11 сказал:

    Про потенциалы Вы не знаете, или там заведомо большое напряжение? Емкость для жидкости стеклянная или железная? Можно ли опустить туда элетрод дополнительный для выравнивания потенциалов в среднем?

     Потенциал относительно ОУ не знаю. Ёмкость большая стекло. К сожалению не металл. 

    Кстати ОУ с изолированеыми FET подобные вопросы не решают, без введения выравнивающего потенциала схемы? 

  15. Всем доброго времени суток!

    Надо в жидкости померить и оцифровать разность потенциалов, типа электрохимии.

    Нужно максимально большое входное сопротивление. Хотябы Гигаом.

    Вижу есть ОУ с CMOS, у которых входной ток в НКУ 1пА

    С реализацией схемы есть вопросы.

    На сколько я понимаю такая схема будет работать когда напряжения V1 и V2 на входу относительно нуля должны находиться в диапазоне питания ОУ.

    А в моем случае потенциалы в жидкости никак не связаны с питанием ОУ, и подтяжки по входам не поставить ввиду обеспечения требованиям ГОм на входе, то будет ли такая схема работать?

    ОУ к примеру MCP601 

    или инструментальник типа AD8236

    MCP60x.jpg

  16. AE857 по сабжу ОК но, к сожалению, не подходит по двум причинам:

    - входное сопротивление - совсем низкое, на интересующем самом низком диапазоне 10В(5В) всего то 180кОм. Хотелось бы единицы а то и десятки МОм.

    - по метрологии характеристики весьма посредственные. Пределы допускаемой основной абсолютной погрешности измерений на диапазоне 5В -> 0,002*5+0,0016*5 = +/- 18мВ. Многовато. Хотелось бы раза в 3 поменьше.

    ПЛК, я так понимаю, наверное не подразумевают более-менее точные измерения. Это ж комбайн а не точное СИ.

  17. Дорого времени суток.

    Компактный вольтметр DC без индикации с RS485 или 232 с сертификатом Госреестра РФ - такие у нас вообще бывают? Искал - не нашел. Заранее спасибо за наводку!

     

  18. В 08.09.2023 в 15:57, jcxz сказал:

    И почему у вас такой большой уход RTC? От чего его тактируете?

    тактирую от внешнего кварцевого резонатора на 32768 https://www.chipdip.ru/product0/8001797043

    у него 20ppm, мой уход больше этой цифры.

    Частотомера хорошего у меня нет но осцилл RIGOL показал с предварительно настроенного выхода MCO импульсы частотой 32765...32771 Гц (в течение часа).

    В 08.09.2023 в 15:57, jcxz сказал:

    Подстраивать от чего? Источник эталонного сигнала?

    STM пишет в том ключе, что мол подавая более высокую частоту аля HSE и считая кол-во импульсов LSE за определенную длительность в секундах, можно понять смещение LSE от нужной 32768. Ну о потом это смещение в регистре RTC_CALR учесть. Но до конца в этот процесс не смог вникнуть.

  19. всем доброго времени суток. Есть непонятки как реализовать калибровку RTC, конкретно у меня за 1 час время уходит на 1-2 минуты.

    в МК есть регистр RTC calibration register (RTC_CALR) где есть возможность добавить тиков или пропустить. В кубике на это счет даже есть функция HAL_RTCEx_SetCalibrationOutPut(...). Вопрос вот в чем - как понять сколько тиков надо добавить или пропустить? Нигде не могу найти соотв. exampe как всем этим механизмом пользоваться. 

    Хочется иметь возможность подстраивать RTC без внешнего участия и подключений частотомеров.

    MK семейства F4 и L4

  20. так а есть в каких-нибудь даташитах или стандартах фразы, говорящие о то что подобный трюк допустим? Лично по моим ощущениям, в приемном и передающем каналах трансформаторы и симфазные фильтры скорее всего одинаковые, но напрягает, что в даташитах, причем на разные аналогичного применения трансформаторы (в т.ч. отечественные), четко разделяют каналы на прием и передачу. Поэтому допускаю подвох.

  21. всем доброго времени суток.

    вопрос сопряжения м/с LAN8720AI и трансформатора HX1188NL: по трассировке если следовать документации то получается проводники RX TX между м/с и трансформатором будут крест/накрест. Можно ли изменить связи таким образом, что в трансрфматоре канал который обозначен как Tranceiver использовать как Receiver и наоборот? Тогда по трассировке получиться всё четко. 

    image.thumb.png.a2a5e6605bda881ef515e99ae58da9c7.png

  22. В 01.02.2023 в 14:30, Allregia сказал:

    Это типа ADGM1144?

    Цена может не понравится.

     

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

×
×
  • Create New...