====== HP48 ======
{{:jbsim13.zip|JBSim 1.3}}
« "JBSIM 1.3 BY J.B." { "Calcul d'un pH" "Dosage" } 1.
IF CHOOSE
THEN { "Calcul d'un pH" "Dosage" } SWAP POS { Vd VM NVAC V H CALCpH EQPH } PURGE { AcideFort
« "Acide Fort" { { "C" "Concentration en acide fort" 0. 6. } } 1. { } { }
IF INFORM
THEN OBJ→ DROP
END -1. 0.
» BaseForte
« "Base Forte" { { "C" "Concentration en base forte" 0. 6. } } 1. { } { }
IF INFORM
THEN OBJ→ DROP
END 1. 0.
» Acidite1
« "1 ACIDITE" { { "CA" "Concentration en [AH]" 0. 6. } { "CB" "Concentration en [A-]" 0. 6. } { "pKa" "-LOG(Constante d'acidite)" 0. 6. } } 1. { } { }
IF INFORM
THEN OBJ→ DROP
END → CA CB pKa
« H CB * CA pKa NEG ALOG *
- H pKa NEG ALOG + / 1.
» 0.
» Acidites2
« "2 ACIDITES" { { "C1" "Concentration en AH2" 0. 6. } { "C2" "Concentration en AH-" 0. 6. } { "C3" "Concentration en A2-" 0. 6. } { "pKa1" "-LOG(Constante d'acidite 1)" 0. 6. } { "pKa2" "-LOG(Constante d'acidite 2)" 0. 6. } } 2. { } { }
IF INFORM
THEN OBJ→ DROP
END → C1 C2 C3 pKa1 pKa2
« C2 2. C1 * + H C3 * H C1 *
- pKa2 ALOG *
- 2. H 2. ^ * C3 * H 2. ^ C2 * + pKa2 pKa1 + ALOG *
- NEG 1. H pKa2 ALOG * + H 2. ^ pKa2 pKa1 + ALOG * + / 1.
» 0.
» Acidites3
« "3 ACIDITES" { { "C1" "Concentration en H3A" 0. 6. } { "C2" "Concentration en H2A-" 0. 6. } { "C3" "Concentration en HA2-" 0. 6. } { "C4" "Concentration en A3-" 0. 6. } { "pKa1" "-LOG(Constante d'acidite 1)" 0. 6. } { "pKa2" "-LOG(Constante d'acidite 2)" 0. 6. } { "pKa3" "-LOG(Constante d'acidite 3)" 0. 6. } } 2. { } { }
IF INFORM
THEN OBJ→ DROP
END → C1 C2 C3 C4 pKa1 pKa2 pKa3
« -1. 10. pKa1 NEG pKa2 - pKa3 - ^ 10. pKa2 NEG pKa1 - ^ H * + 10. pKa1 NEG ^ H 2. ^ * + H 3. ^ + / 3. 10. pKa2 NEG pKa3 - ^ * 2. 10. pKa2 NEG ^ * H * + H 2. ^ + * C1 C2 + C3 + C4 + * 10. pKa1 NEG ^ * C2 + 2. C3 * + 3. C4 * + 1.
» 0.
» CH1
« { AcideFort BaseForte Acidite1 Acidites2 Acidites3 Continuer } 1.
» Calcul1pH
« { Vd 10. } | { V 0. } | 'H' { 0. .0000001 1.E-14 } ROOT LOG NEG "pH" →TAG 1.
» Courbe
« (0.,-2.) VM SORT DUP SIZE GET 14. R→C 'V' # 2h { (0.,0.) { 1. 1. } } { FUNCTION } OBJ→ DROP 'Y' 7. →LIST 'PPAR' STO
« 'EQPH' 'H' 0. H 1.E-14 3. →LIST ROOT LOG NEG
» 'EQ' STO PICT PURGE DRAX DRAW
» } → Ch LISTE
« 'H-1.E-14/H' {
«
DO LISTE DUP CH1 POS 1. + GET "BECHER" SWAP EVAL
IF CHOOSE
THEN
IF DUP Continuer SAME
THEN DROP LISTE DUP Calcul1pH POS 1. + GET EVAL
ELSE LISTE DUP 3. ROLL POS 1. + GET EVAL 3. ROLL 3. ROLL * 3. ROLL + SWAP
END
ELSE DROP 1.
END
UNTIL
END
»
«
DO LISTE DUP CH1 POS 1. + GET "BECHER" SWAP EVAL
IF CHOOSE
THEN
IF DUP Continuer SAME
THEN DROP
DO LISTE DUP CH1 POS 1. + GET "BURETTE" SWAP EVAL
IF CHOOSE
THEN
IF DUP Continuer SAME NOT
THEN LISTE DUP 3. ROLL POS 1. + GET EVAL 3. ROLL V * Vd V + / 3. ROLL * 3. ROLL + SWAP
ELSE DROP "VOLUME" { { "LIST V" "LISTE DES PH A CALCULER" 5. } { "Vd" "VOLUME DE SOLUTION A DOSER" 0. 6. } } 1. { } { }
IF INFORM
THEN OBJ→ DROP 'Vd' STO DUP 'VM' STO SIZE 'NVAC' STO EVAL 'EQPH' STO 1. 1.
ELSE DROP 1.
END
END
ELSE DROP 1.
END
UNTIL
END
ELSE LISTE DUP 3. ROLL POS 1. + GET EVAL 3. ROLL Vd * Vd V + / 3. ROLL * 3. ROLL + SWAP
END
ELSE DROP 1.
END
UNTIL
END 0. 'H' STO
« 'EQPH' 'H' 0. H 1.E-14 3. →LIST ROOT LOG NEG
» 'CALCpH' STO " +--------------+" 3. DISP " | Calcul de pH |" 4. DISP " | en cours ... |" 5. DISP " +--------------+" 6. DISP 1. NVAC
FOR M VM M GET DUP 'V' STO CALCpH
NEXT NVAC 2. 2. →LIST →ARRY "Courbe ?" { "Oui" "Non" } 1.
IF CHOOSE
THEN
IF "Oui" SAME
THEN LISTE DUP Courbe POS 1. + GET EVAL
END
END { Vd VM NVAC } PURGE
» } Ch GET EVAL
»
END
»
===== Installation =====
On télécharge le répertoire JBSIM.DIR (ou les fichiers séparément)
On tape INSTALL.
Le programme demande de choisir le port d'installation (non protégé en écriture).
===== Principe =====
JBSim se contente de résoudre l'équation en fonction de [H+] (la concentration en ion hydrogène).
Pour une solution d'eau distillée on résout l'équation suivante :
[H+]=[OH-] <=⇒ [H+]-10E-14/[H+]=0
Si on rajoute un monoacide (HCl par exemple), il suffit de rajouter [Cl-]
[H+]=[OH-]+[Cl-] <=⇒ [H+]-10E-14/[H+]-Co=0
ou Co est la concentration de l'acide.
Chaque fois que l'on rajoute une espèce chimique dans la solution, on rajoute un terme a l'équation d'électroneutralité.
Le programme a été "code" avec l'utilitaire CODE de Levy après avoir été compressé avec PK de Mika.
===== Calcul d'un pH =====
On lance le programme :
{{:8003f2c8cda89aac37bafdc000242e4e.png}}
//__Si on introduit dans le bêcher un acide fort (HCl), on procède ainsi : __ //
* Calcul d'un pH.
{{:670bc79457d8f41fdca2391cdbec7403.png}}
* AcideFort.
{{:24c307dedf7ca60be31ff2dceaebc00f.png}}
* On indique la concentration en mol/L.
{{:ffd35e92a1cb5707d914972ca605967f.png}}
* Continuer.
{{:f3f41287cc036a01edb064d62ac8e716.png}}
Le pH est alors calculé et le résultat apparaît sur la pile.
{{:c2dddb154bf91e14013c85d03be95a96.png}}
//__Si on introduit dans le bêcher un acide faible (CH3COOH), on procède ainsi :__ //
* Calcul d'un pH.
* Acidite1.
* On indique la concentration en [AH] en mol/L.
* On met 0 pour la concentration en [A-] (la concentration de la base conjuguée au départ).
* On indique le pKa.
* Continuer.
Le pH est alors calcule et le résultat apparaît sur la pile.
//__Si on introduit dans le bêcher une base faible (NH3), on procède ainsi :__ //
* Calcul d'un pH.
* Acidite1.
* On met 0 pour la concentration en [AH] (la concentration de l'acide conjuguée au départ).
* On indique la concentration en [A-] en mol/L.
* On indique le pKa.
* Continuer.
* Le pH est alors calcule et le résultat apparaît sur la pile.
//__Si on introduit dans le bêcher une solution tampon (CH3COOH 0.1 mol/L et CH3COO- 0.1 mol/L), on procède ainsi :__ //
* Calcul d'un pH.
{{:670bc79457d8f41fdca2391cdbec7403.png}}
{{:e87f4d02bdf786e52a1e94a3b0463ea5.png}}
* Acidite1.
* On indique la concentration en [AH] en mol/L.
* On indique la concentration en [A-] en mol/L.
* On indique le pKa.
{{:7b3704cb33ee7e34aabe2b9db08ac745.png}}
* Continuer.
* Le pH s'affiche
{{:43ef5f302ab911753ee92ec58bdeaaf7.png}}
Le pH est alors calcule et le résultat apparaît sur la pile.
//__Si on introduit dans le bêcher un mélange d'acide et de base forts (HCl et NaOH), on procède ainsi :__ //
* Calcul d'un pH.
* AcideFort.
* On indique la concentration en mol/L.
* BaseForte.
* On indique la concentration en mol/L.
* Continuer.
Le pH est alors calcule et le résultat apparaît sur la pile.
**On rajoute dans la solution tout ce que l'on veut puis on Continue …**
===== Dosage =====
On opère de la même façon que pour le calcul d'un pH :
* on indique ce que l'on met dans le bêcher.
{{:611ab8ad5a3d455a7d7158fbba21599d.png}}
{{:c6a83a10c7f73fc24c3a38d291bd3584.png}}
* Continuer
{{:5bb1bd3b981cf21c0d96276bdbdbb644.png}}
* on indique ce que l'on met dans la burette.
{{:d7be2920c64fc713d28f5610d9c1ca07.png}}
{{:2b11f1f57f4c77e849a816cca911b4c4.png}}
* Continuer
{{:b5ff4bd16321cded70c67d7b9676b730.png}}
* Indiquer les volumes versés a la burette dont les pH seront calculés en particulier :
Ex : {0 5 10 15 20 25 30 35 40}
{{:8f71dce8ab320b3e187cb16d5462fed2.png}}
le pH sera calculé pour
V = 0, 5, 10, 20, 35, 30, 35, 40 mL
et la courbe sera tracée pour un volume total versé de 40mL.
Si on met {20} un seul pH sera calculé a 20mL et la courbe sera tracée de 0 a 20mL.
* Indiquer le volume initial de la solution du bêcher(ici 10 mL)
{{:8f71dce8ab320b3e187cb16d5462fed2.png}}
NB : les volumes doivent être exprimés dans la même unité (mL ou L).
* Le calcul de pH s'effectue
{{:dee09569ba85619a2c4a434cbd8cfcf2.png}}
* Indiquer si la courbe doit être affichée
* Si oui, elle est tracée
{{:83403aee212eed3c099566dd11b956d8.png}}
{{:caba941de7eb92a3d6d2a9ee7e453264.png}}
* Le pH des différents volume est affiché
{{:bd2b490d5f32e5c7a610e1da0fd21178.png}}