temporizzatore con quarzo

Salve, dovrei fare una specie di oscillatore ad onda quadra che chiuda un interruttore per T1 millisecondi ogni T2 millisecondi, con T1 e T2 variabili tramite impostazioni manuali (pensavo ad un dip switch). I tempi che mi servono sono: 1+1, 2+3, 4+6, 40+60 (T1 e T2). Avrei trovato la soluzione usando un NE555 e un CD4066 per simulare il contattto da chiudere e sembra funzionare ed essere abbastanza preciso (decina di micro secondi). Tuttavia la precisione e' proprio quella che cerco perche' avrei bisogno di simulare oltre mille chiusure di circuito per cui, nel totale, avrei sicuramente degli scarti dell'ordine dei millisecondi. Per cui avrei pensato di usare un quarzo, ma dato che e' la prima volta che li uso non sono abbastanza sicuro che possano servire al mio scopo perche' mi pare di capire che la forma d'onda quadra che avrei sarebbe sempre con T1 e T2 uguali. Sbaglio?

Grazie, alessio

questo e' lo schema che sto usando ora: [FIDOCAD ] RV 40 15 85 75 LI 40 70 30 70 LI 40 60 20 60 LI 40 50 20 50 LI 20 50 20 60 MC 20 35 1 0 200 LI 20 35 40 35 TY 45 70 5 3 0 0 0 * 1 TY 45 60 5 3 0 0 0 * 2 TY 45 50 5 3 0 0 0 * 6 TY 45 35 5 3 0 0 0 * 7 LI 20 35 5 35 LI 20 50 10 50 LI 10 50 10 75 LI 10 75 -45 75 LI -45 75 -45 35 LI -45 35 -40 35 LI -40 45 -45 45 LI -40 55 -45 55 LI -40 65 -45 65 RV -15 30 5 70 MC -40 35 0 0 080 MC -40 45 0 0 080 MC -40 65 0 0 080 MC -40 55 0 0 080 LI -30 35 -15 35 LI -30 45 -15 45 LI -30 55 -15 55 LI -30 65 -15 65 LI 20 -20 5 -20 LI 10 20 -45 20 LI -45 20 -45 -20 LI -45 -20 -40 -20 LI -40 -10 -45 -10 LI -40 0 -45 0 LI -40 10 -45 10 RV -15 -25 5 15 MC -40 -20 0 0 080 MC -40 -10 0 0 080 MC -40 10 0 0 080 MC -40 0 0 0 080 LI -30 -20 -15 -20 LI -30 -10 -15 -10 LI -30 0 -15 0 LI -30 10 -15 10 LI 10 20 20 20 LI 20 20 20 35 LI 20 -20 50 -20 LI 50 -20 50 15 TY 50 20 5 3 0 0 0 * 8 TY -5 -20 5 3 270 0 0 * dip switch TY -5 35 5 3 270 0 0 * dip switch SA 20 35 SA 20 50 SA -45 45 SA -45 55 SA -45 65 SA 20 60 SA -45 10 SA -45 0 SA -45 -10 SA -45 -20 LI 70 75 70 80 MC 70 80 1 0 170 MC 70 90 0 0 040 TY 70 70 5 3 0 0 0 * 5 TY 80 45 5 3 0 0 0 * 3 LI 85 45 105 45 LI 130 45 135 45 RV 135 20 170 75 LI 140 75 140 85 MC 140 85 0 0 040 MC 150 35 1 0 576 LI 140 45 145 45 LI 145 45 135 45 LI 150 35 170 35 LI 150 55 170 55 LI 170 35 195 35 LI 170 55 195 55 TY 200 35 5 3 0 0 0 * IN1 TY 200 55 5 3 0 0 0 * IN2 LI 105 45 130 45 LI 50 -20 145 -20 LI 145 -20 145 20 TY 140 20 5 3 0 0 0 * 14 TY 135 40 5 3 0 0 0 * 13 TY 165 30 5 3 0 0 0 * 1 TY 140 70 5 3 0 0 0 * 7 TY 165 55 5 3 0 0 0 * 2 LI 90 35 95 35 LI 95 35 95 20 LI 95 20 105 20 LI 105 20 105 35 LI 105 35 120 35 LI 120 35 120 20 LI 120 20 130 20 TY 100 15 5 3 0 0 0 * T1 TY 110 35 5 3 0 0 0 * T2 TY 75 85 5 3 0 0 0 * .01 microF MC 20 90 0 0 040 MC 20 80 0 0 180 LI 20 60 20 80 MC 30 90 0 0 040 LI 30 90 30 70 TY 5 85 5 3 0 0 0 * 1 microF TY 60 45 5 3 0 0 0 * NE555 TY 145 65 5 3 0 0 0 * CD4066

Reply to
Alessio
Loading thread data ...

range

Per

CD4017

schema

Ciao e grazie per l'aiuto. Non e' che riesci a darmi un circuito completo, sempre in fidocad? prima di arrivare a chiedertelo devo dire che e' da quasi 10giorni che ci provo da solo, ma non riesco a venirne fuori. Piu' che altro non capisco come si utiizza il quarzo per creare un oscillatore. Guardando in Rete ho visto che molti usano uno schema di questo tipo: [FIDOCAD ] MC 75 50 0 0 115 MC 75 80 1 0 170 MC 85 95 0 0 040 MC 95 80 1 0 170 MC 95 65 1 0 140 MC 90 45 1 0 115 LI 75 90 75 95 LI 75 95 95 95 LI 95 95 95 90 LI 95 80 95 45 LI 95 45 95 40 LI 90 45 95 45 LI 80 45 75 45 LI 75 40 75 50 LI 75 60 75 80 LI 80 65 75 65 SA 75 65 SA 95 65 SA 95 45 SA 75 45

ma nessuno spiega come calcolare i valori dei condensatori e resistenze. Poi non capisco come funzionino i divisori, nel senso che non capisco cosa ci vada in "input", se clock o clock-negato. Ero abituato con l'NE555 ad avere un unico piedino su cui lavorare..:-P

tra l'altro, visto che ci sono, volevo chiederti come si fa a vedere a quale frequenza gira l'oscillatore usando un oscilloscopio..

grazie, alessio

Reply to
Alessio

Ciao Quella parte di schema e' giusta usando un inverter Cmos.

Ti metto lo schemetto con transistor, coi valori per un un oscillatore a quarzo che va bene per frequenze alte e forse anche per il tuo quarzo, senza cambiare nulla. Se mi dici la frequenza del quarzo ti dico i valori corretti.

Se poi vuoi divertirti ho fatto un programmetto in Excel per progettare qualunque oscillatore a quarzo con 74LS04 Ricordami quarz-xls Eventualmente ne trovi uno con Cmos nella pagina di Celso.

Ciao Giorgio [FIDOCAD] MC 60 60 1 0 080 MC 50 55 0 0 080 MC 40 55 1 0 170 MC 40 45 1 0 170 MC 20 50 0 0 140 LI 20 70 20 65 LI 40 65 40 70 LI 50 55 40 55 LI 60 60 60 55 LI 20 45 20 50 LI 40 45 45 45 SA 40 70 SA 40 45 SA 40 55 SA 60 55 SA 60 40 SA 60 70 MC 60 20 0 0 010 MC 60 25 1 0 080 LI 60 25 60 20 MC 70 40 2 0 170 TY 45 35 5 3 0 0 0 * 2n708 MC 40 25 1 0 080 LI 40 45 40 35 LI 40 25 40 20 LI 40 20 60 20 SA 60 20 PP 29 60 31 60 30 64 LI 40 55 30 55 LI 30 55 30 60 TY 22 28 5 3 0 0 0 * 100 K. TY 63 28 5 3 0 0 0 * 100 ohm TY 67 17 5 3 0 0 0 * +5/9 V TY 63 63 5 3 0 0 0 * 1 K. TY 49 57 5 3 0 0 0 * 1 K. TY 41 62 5 3 0 0 0 * 39pF TY 60 42 5 3 0 0 0 * 0.1uF TY 13 72 5 3 0 0 0 * 8-16 Mhz LI 31 45 20 45 MC 29 45 0 0 170 SA 74 70 LI 70 40 74 40 LI 74 40 74 70 LI 60 55 64 55 PP 64 56 64 54 68 55 TY 63 56 5 3 0 0 0 * OUT1 LI 74 70 20 70 MC 74 70 0 0 020 TY 43 47 5 3 0 0 0 * 22pf MC 45 45 0 0 280 TY 28 37 5 3 0 0 0 * 32pf TY 9 79 5 3 0 0 0 * OUT 2 serve per prelevare un TY 25 65 5 3 0 0 0 * OUT 2 TY 10 85 5 3 0 0 0 * segnale debole ma indistorto.

Reply to
Giorgio Montaguti

"Alessio" ha scritto

Io ho sempre usato questo schemino. I valori non sono critici, in pratica ho visto che il tutto oscilla anche con valori abbastanza diversi. In serie al quarzo puo' essere messo un piccolo compensatore da 40pF per correggere in modo fine la frequenza.

[FIDOCAD] MC 25 30 0 0 680 MC 60 30 1 0 140 MC 60 30 0 0 680 MC 80 30 0 0 680 MC 40 20 1 0 115 MC 75 20 1 0 115 LI 40 20 45 20 LI 45 20 45 30 LI 30 20 25 20 LI 25 20 25 30 LI 65 20 60 20 LI 60 20 60 30 LI 75 20 80 20 LI 80 20 80 30 MC 45 45 0 0 170 LI 45 45 25 45 LI 25 45 25 30 LI 55 45 80 45 LI 80 45 80 30 SA 80 30 SA 45 30 SA 60 30 SA 25 30 TY 65 13 5 3 0 0 0 * 1,5k TY 85 36 5 3 0 0 0 * 74HC04 TY 46 38 5 3 0 0 0 * 10nF TY 30 14 5 3 0 0 0 * 1,5k TY 20 55 5 3 0 0 0 * Se si usa un 74LS04 le TY 20 60 5 3 0 0 0 * resistenze vanno da 220 ohm

In questo caso e' abbastanza indifferente, di solito un divisore conteggia su uno dei due fronti. Darei un'occhiata ai CD4518 che contengono due sezioni indipendenti che dividono per 10, con due di questi si puo' fare il divisore per 1000 e con la sezione che rimane quello per 10 (gli enable si tengono fissi a 1 e i reset fissi a 0). Il divisore per 2 si ottiene con la prima uscita di un contatore binario a qualsiasi numero di bit, per esempio dall'uscita A di un CD4040 (il reset si tiene fisso a 0). I CD4017 hanno un pin di inibizione clock (il 13) che va tenuto a 0 e il reset si collega secondo necessita' come ho mostrato nello schema dell'altra volta. Le porte OR si ottengono con un paio di 74HC32.

La misura non e' precisissima, ogni quadretto in orizzontale corrisponde a tot mS o uS e quindi si ottiene il periodo.

Claudio F

Reply to
Claudio F

:-) non mi sono dimenticato.. dopo tanto tempo volevo ringraziarvi per l'aiuto che mi avete dato e volevo aggiornarvi su quello che nel frattempo ho fatto.. Certo, non ho utilizzato tutti questi mesi solo per il temporizzatore, ma ci ho pensato parecchio nel tempo libero. Dunque, il circuito di Claudio F. l'ho realizzato su una breadboard e ha funzionato egregiamente. Avevo il solito problema del quarzo e dei condensatori e capire in che modo funzionasse l'accoppiamento, alla fine ho risolto in modo molto pezzente, lo so, usando un oscillatore quarzato di quelli nelle scatolette da 4 pin :-P Risolto questo problema pero' ne ho avuto uno di tipo "estetico": usare 5 chip per fare un lavoro del genere mi pareva davvero eccessivo, soprattutto quando ho usato un 4059 che e' un vero bestione di chip.

Quindi ho provato a buttarmi nel mondo dei PIC e devo dire che ne sono rimasto affascinato. Alla fine ho realizzato la stessa cosa con un 12F675, un quarzo esterno, due condensatori e un paio di resistenze.. davvero un bel progresso! Certo, anche qui ho visto che per avere dei timings precisi ho dovuto sbattere un po' le corna (ricordo che dovevo avere un duty-cycle di 1ms+1ms preciso fino ad almeno 1000 cicli), ma alla fine ho risolto, anche qui in modo pezzente, contando quanti microsecondi passavano tra un ciclo e l'altro... Ma ho letto nel NG che pure Claudio F. ha avuto delle simpatie per il TMR0 :-)

Adesso pero' mi resta ancora un problema che spero di risolvere a breve: tutto questo popo' di circuiteria mi serviva per chiudere un interruttore, o meglio per simulare la chiusura di un pulsante: ----o____o----- Pensavo di collegare questo "clock" di impulsi in uscita dal PIC ad un 4066, ma con dispiacere vedo che tra un mezzo ciclo e l'altro il segnale non e' proprio "1" / "0" ma tende a essere piu' continuo che discreto, cioe' ci sono un po' di uSecondi di caduta. Immagino che questo sia dovuto al fatto che il 4066 sia un Analog Switch, giusto? Esistono dei "digital" switch che mi consentano di avere una chiusura ideale 0/1/0/1? Pensavo di provare ad usare transistor, ma non sono sicuro di poter "simulare" un pulsante che chiuda due contatti (tutti i progetti che ho visto portano in qualche maniera il Vdd a massa)

grazie, alessio

Per intanto, se a qualcuno potesse servire, questo e' quello che ho fatto fin'ora: [FIDOCAD ] MC 45 35 0 0 170 LI 80 40 70 40 LI 70 40 70 35 LI 70 35 55 35 LI 80 45 70 45 RV 130 35 145 50 LI 145 45 155 45 TY 135 40 5 3 0 0 0 * 0 1 TY 135 35 5 3 0 0 0 * 0 1 LI 145 40 150 40 MC 150 25 3 0 010 MC 155 25 3 0 010 LI 150 40 150 25 LI 155 45 155 25 MC 60 35 0 0 980 LI 70 45 55 45 MC 45 45 0 0 170 MC 45 45 1 0 040 MC 45 35 1 0 040 MC 65 60 1 0 080 MC 65 75 1 0 010 MC 100 70 2 0 576 MC 60 60 1 0 750 LI 80 50 65 50 LI 65 50 65 60 LI 65 60 60 60 MC 45 60 1 0 040 LI 65 75 65 70 LI 90 65 90 60 LI 90 60 105 60 LI 105 60 105 50 LI 80 35 75 35 MC 70 25 0 0 040 LI 75 35 75 15 LI 75 15 70 15 LI 70 15 70 25 SA 60 35 SA 60 45 SA 65 60 LI 80 70 80 95 LI 100 70 100 95 TY 85 75 5 3 0 0 0 * 4066 TY 130 30 5 3 0 0 0 * DIP sw TY 120 5 5 3 0 0 0 * +5V da presa USB TY 70 50 5 3 0 0 0 * MCLR TY 105 40 3 3 0 0 0 * IN_0 TY 105 45 3 3 0 0 0 * IN_1 TY 105 50 3 3 0 0 0 * OUT LI 120 45 120 50 MC 120 50 1 0 080 MC 125 60 1 0 080 LI 125 50 125 60 LI 120 60 120 75 LI 125 70 125 75 LI 125 40 125 50 MC 120 75 0 0 040 MC 125 75 0 0 040 MC 120 45 0 0 030 LI 105 45 110 45 LI 120 45 105 45 SA 120 45 LI 105 40 130 40 SA 125 40 TY 60 90 3 3 0 0 0 * terminali da cortocircuitare TY 45 60 4 3 0 0 0 * reset TY 55 45 3 3 90 0 0 * 4Mhz TY 45 30 3 3 0 0 0 * 22pF TY 45 40 3 3 0 0 0 * 22pF TY 90 15 3 3 0 0 0 * 100nF TY 115 60 3 3 90 0 0 * 47k TY 127 70 3 3 90 0 0 * 47k TY 84 33 3 3 0 0 0 * 1 TY 99 33 3 3 0 0 0 * 8 TY 99 39 3 3 0 0 0 * 7 TY 99 45 3 3 0 0 0 * 6 TY 99 48 3 3 0 0 0 * 5 TY 84 48 3 3 0 0 0 * 4 TY 84 45 3 3 0 0 0 * 3 TY 84 39 3 3 0 0 0 * 2 TY 86 50 5 3 90 0 0 * PIC TY 91 50 5 3 90 0 0 * 12F675 MC 80 35 0 0 600 MC 84 21 0 0 170 LI 84 21 78 21 LI 78 21 75 21 SA 75 21 SA 108 21 LI 93 21 108 21 LI 108 10 108 35 MC 108 10 3 0 010 LI 108 35 105 35

e source .asm per il pic (chiedo venia per eventuali errori ma non ho mai programmato in assembler) ;il funzionamento e' semplice, la realizzazione pratica un po' meno.. ; leggere lo status di GPIO_0 e GPIO_1, a seconda del valore binario, 00,

01,10,11 scegliamo una ;delle 4 routine previste per 1+1ms, 2+3, 6+4 e 60+40. ;l'out che ci serve per il 4066 lo preleviamo dall'uscita GPIO_2 impostata come OUT.. ;niente TMR0, interrupt o altro. Ci ho provato ma troppo tempo perso.. list p=12F675 RADIX DEC INCLUDE "P12F675.INC" ERRORLEVEL -302

__config 03F1h

;ORG 0x20 ;impostiamo alcune variabili.. duty_type EQU 0x20 counter EQU 0x21 loop1 EQU 0x22; loop2 EQU 0x23;

ORG 0x00 goto main

ORG 0x04 retfie ;nessun interrupt

main ;impostare i pin a digitale (ANSEL e CMCON) ;impostare il TRISIO per aver i pin a ingresso ;disabilitare interrupt ;togliere le weak pull up ;verificare il CLMR bcf STATUS,RP0 ;banco 0 movlw 07h movwf CMCON ;impostiamo tutti i pin a digitale clrf INTCON ;cancelliamo interrutp

bsf STATUS,RP0 ;banco 1 movlw b'10000000' movwf OPTION_REG ;no weak pullup, tutto il resto di optionreg a 0 ;impostiamo i pin gpio in ingresso e in uscita (il nostro segnale) movlw b'00000011' movwf TRISIO ;impostiamo i pin come digitali e non analogici clrf ANSEL

mainLoop ;adesso verifichiamo il valore di duty_type... a seconda ; del valore vai alla routine prevista bcf STATUS,Z ;azzeriamo il bit di Zero bcf STATUS,RP0 ;banco 0 ;adesso verifichiamo lo status dei GPIO_0 e GPIO_1 movlw b'00000011' ;ecco la maschera e la mettiamo in W andwf GPIO,W ; viedmao se cosi fa AND e lo mette in W movwf duty_type movf duty_type,W sublw 0 btfsc STATUS,Z goto duty_0

movf duty_type,W sublw 1 btfsc STATUS,Z goto duty_1

movf duty_type,W sublw 2 btfsc STATUS,Z goto duty_2

movf duty_type,W sublw 3 btfsc STATUS,Z goto duty_3

duty_0 ;1+1 ms bcf STATUS,RP0 ;\+2 bsf GPIO,GPIO2 ;/ movlw 84 ;\+2 movwf counter ;/ decfsz counter,1 ;\ goto $-1 ;/+3 all'uscita vale +2 84x3 -1 movlw 84 movwf counter decfsz counter,1 goto $-1 movlw 84 movwf counter decfsz counter,1 goto $-1 movlw 79 movwf counter decfsz counter,1 goto $-1 nop

bcf STATUS,RP0 bcf GPIO,GPIO2 movlw 84 movwf counter decfsz counter,1 goto $-1 movlw 84 movwf counter decfsz counter,1 goto $-1 movlw 84 movwf counter decfsz counter,1 goto $-1 movlw 78 movwf counter decfsz counter,1 goto $-1 nop nop goto duty_0 ;il goto vale 2 cicli.. duty_1 ;2+3 ms bcf STATUS,RP0 ;\+2 bsf GPIO,GPIO2 ;/ movlw 2 movwf loop1 repeat2000 call delay_763 movlw 77 movwf counter decfsz counter,1 ; goto $-1 decfsz loop1,1 goto repeat2000 nop bcf STATUS,RP0 bcf GPIO,GPIO2 movlw 3 movwf loop1 repeat3000 call delay_763 movlw 77 movwf counter decfsz counter,1 ; goto $-1 decfsz loop1,1 goto repeat3000 nop goto duty_1

duty_2 ;6+4 bcf STATUS,RP0 ;\+2 bsf GPIO,GPIO2 ;/ movlw 6 movwf loop1 repeat6000 call delay_763 movlw 77 movwf counter decfsz counter,1 ; goto $-1 nop ; nop x 6 decfsz loop1,1 goto repeat6000 nop nop nop bcf STATUS,RP0 bcf GPIO,GPIO2 movlw 4 movwf loop1 repeat4000 call delay_763 movlw 77 movwf counter decfsz counter,1 ; goto $-1 decfsz loop1,1 goto repeat4000 nop nop nop goto duty_2 duty_3; bcf STATUS,RP0 ;\+2 bsf GPIO,GPIO2 ;/ movlw 60 movwf loop1 repeat60000; 4 + [763 +2 +(3x77-1)] x 60 +(3x60-1) = 59883 -> 117 nop =60

  • 57 call delay_763 movlw 77 movwf counter decfsz counter,1 ; goto $-1 nop ; nop x 60 decfsz loop1,1 goto repeat60000 nop ; 57 x nop :-P ok fa schifo ma meglio che perdersi a contare le istruzioni di ogni loop e movlw.. nop nop nop nop nop nop nop nop nop; nop nop nop nop nop nop nop nop nop nop; nop nop nop nop nop nop nop nop nop nop; nop nop nop nop nop nop nop nop nop nop; nop nop nop nop nop nop nop nop nop nop; nop nop nop nop nop nop nop; 57 x nop bcf STATUS,RP0 bcf GPIO,GPIO2 movlw 40 movwf loop1 repeat40000 ; 6 + [ 763 +2 + (3x 77 -1)] x 40 + (40x3 -1) =39925 -> 75 nop = 40 +35 call delay_763 movlw 77 movwf counter decfsz counter,1 ; goto $-1 nop ; x 40 decfsz loop1,1 goto repeat40000 nop ; 35 x nop :P poco efficiente ma meglio che perdersi nei loop nop nop nop nop nop nop nop nop nop; 10 nop nop nop nop nop nop nop nop nop nop nop; 20 nop nop nop nop nop nop nop nop nop nop nop; 30 nop nop nop nop nop nop ; 35 nop goto duty_3

delay_763 ;delay di 84*3*3-3*1+2*3+2 +2 della CALL movlw 84 ;\+2 movwf counter ;/ decfsz counter,1 ;\ goto $-1 ;/+3 all'uscita vale +2 84x3 -1 movlw 84 movwf counter decfsz counter,1 goto $-1 movlw 84 movwf counter ; decfsz counter,1 goto $-1 return END

Reply to
Alessio

Esistono, ma sono + cari e -reperibili.

Forse ti basta mettere un 74HC4066 che e' +veloce e pin2pin (anche se va solo a 5V) e mettere in parallelo i 4 switch di un ic.

In alternativa puoi usare un MOSFET (es. IRF540) discreto, comunque se hai un carico capacitivo, il fronte non sara' mai ideale.

ciao Stefano

Reply to
SB

non e' un problema di soldi, per ora.. sempre che non costino molto di piu'..

in che senso in parallelo?

so che dovrebbe sostituire un pulsante, come puo' essere quello del mouse o quello di una pulsantiera che usiamo per test psicologici

ciao, Alessio

Reply to
Alessio

Nel senso che se colleghi YA YB YC YD insieme, XA XB XC XD insieme e CNTA CNTB CNTC e CNTD insieme, ottieni un unico switch con potenza quadrupla.

E allora che problema ti da qualche microsecondo?

ciao Stefano

Reply to
SB

bene, ora provo e verifico

il problema per cui abbiamo fatto tutto questo ambaradan e' che volevamo simulare la pressione di un tasto di una pulsantiera per epserimenti psicologici, per testare la bonta' del programma software che la utilizza. Si simulare con una serie di circa 1000 pressioni e rilasci e verifica dei tempi: noi sappiamo che la simulazione funziona a 1ms pressione e 1ms rilascio 1 pressione e 1 rilascio e cosi' di seguito, il programma e' altrettanto buono a rilevarle? un microsecondo su un singolo rilascio non e' niente, ma sommati tanti microsecondi possono sfalsare il test. Tuttavia SOLO ora mi sto rendendo conto di una cosa: il debounce. Ho provato a simulare la cosa con il mouse, non sono riuscito a far andare il mouse ON/OFF per tempi inferiori a 100ms, mi sa che c'e' un circuito interno che applica il debounce.. e mi sa, credo, che ci sia pure sulla pulsantiera che usiamo, ma questo e' da verificare..

grazie comunque per la disponibilita' alessio

Reply to
Alessio

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.